奇偶排序(砖块排序)的 C/C++ 程序?
现在我们来了解下砖块排序如何工作。砖块排序是气泡排序的一种修改。此算法分为两部分。这两部分是奇数部分和偶数部分。在奇数部分,我们对奇数索引项使用气泡排序,而在偶数部分,我们对偶数索引元素使用气泡排序。让我们了解该算法以获得思路。
算法
brickSort(arr, n)
begin flag := false while the flag is not true, do flag := true for i := 1 to n-2, increase i by 2, do if arr[i] > arr[i+1], then exchange arr[i] and arr[i+1] flag := false end if done for i := 0 to n-2, increase i by 2, do if arr[i] > arr[i+1], then exchange arr[i] and arr[i+1] flag := false end if done done end
示例
#include<iostream> using namespace std; void brickSort(int arr[], int n){ bool flag = false; while(!flag){ flag = true; for(int i = 1; i<n-1; i= i+2){ if(arr[i] > arr[i+1]){ swap(arr[i], arr[i+1]); flag = false; } } for(int i = 0; i<n-1; i= i+2){ if(arr[i] > arr[i+1]){ swap(arr[i], arr[i+1]); flag = false; } } } } main() { int data[] = {54, 74, 98, 154, 98, 32, 20, 13, 35, 40}; int n = sizeof(data)/sizeof(data[0]); cout << "Sorted Sequence "; brickSort(data, n); for(int i = 0; i <n;i++){ cout << data[i] << " "; } }
输出
Sorted Sequence 13 20 32 35 40 54 74 98 98 154
广告