希尔排序问题出在哪里?
各位大侠好,帮忙看下我写的这个希尔排序,错在什么地方,谢谢?
- C/C++ code
#include "stdafx.h"#include<iostream>using namespace std;const int SIZE=10;void shellSort(int ia[],int size);int _tmain(int argc, _TCHAR* argv[]){ int temp,j; int ia[SIZE]={8,6,1,7,9,2,5,3,4,0}; //int ia[SIZE]={49,38,65,97,76,13,27,49}; shellSort(ia,8); for (int i=0;i<SIZE;++i) cout<<ia[i]<<" "; cout<<endl; system("pause"); return 0;}void shellSort(int ia[],int size){ int iNum=size; while(iNum>1) { iNum=(iNum+1)/2; for(int i=0;i<size-iNum;++i) { if (ia[i]>ia[i+iNum]) swap(ia[i],ia[i+iNum]); } }}
[解决办法]
少了一层循环,应该是缺少了内层循环,也就是没有插入排序过程。
[解决办法]
你有10个元素,这里应该改成这样吧:
shellSort(ia,10); //8改成10