排序也是我们经常用到的一种算法,之前我们遇到的有冒泡排序,选择排序等。
那么我们就开始主要梳理一下排序算法,并且重点理解出现频率比较高的快速排序的方法。
推荐看这个人的博客,非常的详细了。
https://blog.csdn.net/qq_38821502/article/details/101385728
快速排序:
适用场景:
数据量大,快速排序是目前基于比较的排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短;
它到底是怎么排的啊?
int quick_sort(int *data, int low, int high) {
int t;
if (data == NULL) {
return -1;
}
if (low >= high)
return 0;
t = partion(data, low, high); //将一个大问题差分成几个小问题,先找到中轴
quick_sort(data, low, t-1);//递归左半部分
quick_sort(data, t+1, high);//递归右半部分
return 0;
}
//核心操作,找到中轴位置
int partion(int *data, int low, int high) {
int temp = data[low];
while (low < high) {
while (low < high && temp <= data[high]) {
high--;
}
data[low] = data[high];
while (low < high && temp >= data[low]){
low++;
}
data[high] = data[low];
}
data[low] = temp;
return low;
}