您的位置:首页 > 其它

小白成长之路(6)--快速排序

2017-10-31 22:52 357 查看
#include <iostream>
using namespace std;

//快速排序,最差时间复杂度O(n^2),
//最好时间复杂度O(nlog2N),平均时间复杂度O(nlog2N)
//不稳定,空间复杂度O(nlog2N)
void quick_Sort(int a[], int, int);
void quick_Sort(int s[], int l, int r) {
if (l < r) {
int i = l, j = r, x = s[l];//s[l]为数组第一个数,即基数
while (i < j) {
while (i < j && s[j] >= x)
j--;
if (i < j)
s[i++] = s[j];
while (i < j && s[i] < x)
i++;
if (i < j)
s[j--] = s[i];
}
s[i] = x;
quick_Sort(s, l, r - 1);
quick_Sort(s, l + 1, r);

}

}

int main() {
int array[] = { 34.65,12,43,67,5,78,10,3,70 }, k;
int len = sizeof(array) / sizeof(int);

cout << "The orginal arrayare:" << endl;//第一行

for (k = 0; k < len; k++) {
cout << array[k] << ",";//第二行
}
cout << endl;

quick_Sort(array, 0, len - 1);//先调用函数重新排列数组
cout << "The sorted arrayare:" << endl;//第三行

for (k = 0; k < len; k++) {
cout << array[k] << ",";//第四行
}
cout << endl;
cin.get();
}


运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: