快速排序
排序思想:1.首先选定一个标志值(一般选第一个)value,比其大的放在右边,比其小的放在左边;
2.再分别递归处理value左边和右边的集和;
3.begin与end相等表示结束。
时间复杂度:o(n^log2n)
稳定性:不稳定
//实现代码:
void quick_sort(int *array, int length) //快速排序接口函数
{
if(array != NULL && length > 1){
Quick_sort(array, 0, length - 1);
}
}
static void Quick_sort(int *array, int begin, int end) //快速排序内函数
{
int i = begin;
int j = end;
int value = array[i]; //作为判决左右部分的值
if(begin < end){ //快排递归结束条件
j
while(i < j){ //i和j相等说明整个序列遍历结束
while(j > i && array[j] > value){ //从后向前找比value小的值放在i的位置
j--;
}
if(j > i){
array[i++] = array[j];
}
while(i < j && array[i] < value){ //从前向后找比value大的值放在j的位置
i++;
}
if(i < j){
array[j--] = array[i];
}
}
array[i] = value;
//递归处理i的左部分和右部分
Quick_sort(array, begin, i - 1);
Quick_sort(array, i + 1, end);
}
}