插排的非遞迴很簡單,用兩層迴圈即可搞定,因此時間複雜度為o(n^2),空間複雜度為o(1)。
**如下:
void insertsort(int* parr, int len)
parr[j+1] = key;
}}
插排遞迴實現,可以呼叫自身n-1次,找到之後n-1個元素的正確位置插入進去,時間複雜度也是o(n^2),空間複雜度為o(n)。
**如下:
//將parr陣列中的第index位元素放入到其已排好序的陣列中,陣列總長度為len
void insertsortrecursion(int* parr, int index, int len)
parr[i+1] = key; //將key放入正確的位置
insertsortrecursion(parr, index+1, len);
}}
個人觀點:
不建議使用遞迴寫插排,之所以去實現是因為筆試中,要求寫插排遞迴實現。
快排非遞迴實現
int partition int arr,int low,int high arr low pivot return low void non recursive qsort int arr,int low,int high if high pivot 1 其實就是用棧儲存每乙個待排序子串的首尾元...
快排的遞迴和非遞迴版本
1 算導版本 偽 2 前後依次覆蓋版本 include include include include includeusing namespace std 把陣列分為兩部分,軸pivot左邊的部分都小於軸右邊的部分 template int partition vector vec,int low...
非遞迴快排
通過使用棧來模擬函式棧的呼叫,每次將首尾指標存入到棧中,並對首尾之間區域進行快排。include include include using namespace std 利用棧將序列的起始和末尾儲存起來 int partition vector v,int s,int e swap v s v i ...