快速排序类似于抓扑克,依次比较排序完成的数组,将当前数插在合适的位置
时间复杂度O(n*n)
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
void insert_sort(int *a, int left, int right);
void exch(int &e1, int &e2);
int main()
{
int tmp, iCount = 0;
int a[8] = {2,3,1,4,7,6,5,8}, i, j;
// insert sort
insert_sort(a, 0, 8);
// print a[] after sort
for(i = 0; i < 8; i++){
cout << a[i] << " ";
}
system("pause");
return 0;
}
// insert sort
void insert_sort(int *a, int left, int right)
{
int i, j, iTag;
// put min to the front
for(i = right - 1; i >= left; i--){
if (a[i - 1] > a[i]){
exch(a[i - 1], a[i]);
}
}
// compare and exchange
for (i = left + 1; i < right; i++){
j = i;
iTag = a[j];
if(a[j - 1] > a[j]){
a[j] = a[j - 1];
j --;
}
a[j] = iTag;
}
}
// change two integers
void exch(int &e1, int &e2)
{
int tmp;
tmp = e1;
e1 = e2;
e2 = tmp;
}