本文以實例形式講述了基于C++實現簡單的希爾排序Shell Sort的方法,是一個很經典的算法,具體實現代碼如下:
#include <iostream>using namespace std;void ShellSort(int* iArray,int length){ //初始化jump等于length int jump = length; //標記本趟檢測是否進行了交換, // 若進行了 則還有下次從頭開始的檢測, // 否則停止,繼續改變jump的值 做另一趟排序 bool isSwap; while(jump != 0) { //jump每次/2 jump = jump / 2; do{ int i = 1; //初始化表示沒有進行交換 isSwap = false; while( i <= length - jump) { if(iArray[i] > iArray[i+jump]) { int temp = iArray[i]; iArray[i] = iArray[i+jump]; iArray[i+jump] = temp; isSwap = true; } i++; } }while(isSwap == true);//如果進行了交換說明 增量為jump的序列 //可能存在不是有序的 在檢測一遍 //否則說明增量為jump的序列是有序的 }}int main(){ int iArray[] = {0,50,123,36,25,200,36,95,70,14,10,321,1,3,5,8}; ShellSort(iArray,15); for(int i = 1; i <= 15; i++) { cout<<iArray[i]<<" "; } cout<<endl; return 0;}
新聞熱點
疑難解答