您的位置:首页 > 其它

快速排序

2017-12-05 16:30 183 查看
快速排序类似于抓扑克,依次比较排序完成的数组,将当前数插在合适的位置

时间复杂度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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  快速排序