算法讲解方面参阅下面这本书即可,这里只给出自己练习时实现的代码。
参考书籍:《算法设计与分析基础》
- 源码
#include<iostream>
using namespace std;
void quick_sort(int s[], int l, int r);
int main(){
int array[] = {25, 45, 16, 40, 90, 5, 86, 10, 3, 100, 16};
int length = sizeof(array) / sizeof(int);
quick_sort(array, 0, (length - 1));
for (int i = 0; i < length; i++)
cout << array[i] << " ";
cout << endl;
system("pause");
return 0;
}
void quick_sort(int s[], int l, int r) {
if (l < r){
int i = l, j = r + 1, p = s[l];
do {
do {
j = j - 1;
if (j < l) //防止越界
break;
} while (s[j] > p);
if (i < j)
s[i] = s[j];
do {
i = i + 1;
if (i > r) //防止越界
break;
} while (s[i] < p);
if (i < j)
s[j] = s[i];
} while (i < j);
s[--i] = p;
quick_sort(s, l, i - 1);
quick_sort(s, i + 1, r);
}
}
执行结果
相关博文
发现一篇讲解很好的博文:白话经典算法系列之六 快速排序 快速搞定