本文以實(shí)例形式講述了基于C++實(shí)現(xiàn)簡單的希爾排序Shell Sort的方法,是一個(gè)很經(jīng)典的算法,具體實(shí)現(xiàn)代碼如下:
#include <iostream>using namespace std;void ShellSort(int* iArray,int length){ //初始化jump等于length int jump = length; //標(biāo)記本趟檢測是否進(jìn)行了交換, // 若進(jìn)行了 則還有下次從頭開始的檢測, // 否則停止,繼續(xù)改變jump的值 做另一趟排序 bool isSwap; while(jump != 0) { //jump每次/2 jump = jump / 2; do{ int i = 1; //初始化表示沒有進(jìn)行交換 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);//如果進(jìn)行了交換說明 增量為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;}
新聞熱點(diǎn)
疑難解答