C++梳排序演算法
阿新 • • 發佈:2018-12-09
梳排序的原理:通過比較元素彼此之間的步長位置這種方式對資料進行預處理。在每次移動中,步長會越來越小,直至它等於1。
#include <iostream> #include <stdlib.h> using namespace std; /*******************************************/ /* 梳排序 /******************************************/ void swap(int array[], int j, int k) //位置互換函式 { int temp = array[j]; array[j] = array[k]; array[k] = temp; } void CombSort(int array[], int n) //梳排序函式 { int step = n, j, k; //步長(間距) = 陣列元素的數量 while((step = int (step/1.3)) >= 1) //獲取每次的步長(間距) for (j = n - 1; j >= step; j--) { k = j - step; //通過當前陣列元素減去步長(間距),就可以得出交換的元素 if (array[j] < array[k]) { swap(array[j], array[k]); } } } int main(void) //主程式 { const int n = 6; //陣列元素的數量 int array[n]; cout << "請輸入6個整數:" << endl; for (int i = 0; i < n; i++) { cin >> array[i]; } cout << endl; //換行 CombSort(array, n); // 呼叫BubbleSort函式 進行比較 cout << "由小到大的順序排列後:" << endl; for (int i = 0; i < n; i++) { cout << "Array" << "[" << i << "]" << " = " << array[i] << endl; } cout << endl << endl; //換行 system("pause"); //除錯時,黑視窗不會閃退,一直保持 return 0; }
執行結果: