快排这里不再赘述 主要是时间复杂度 先写一下快排代码
void quick_sort(int a[], int start, int end) {
int val = a[start];
int s = start;
int e = end;
while(s < e) {
while(s < e && a[e] > val) e --;
if(s < e) a[e --] = a[s];
//一样
}
//赋初值
//递归
}
最好情况,每次哨兵在中间相遇,nlgn
最坏情况,每次哨兵在第一个地方或者最后一个地方相遇,出现在有序数列中
平均情况,用1:9来举例,在1/10处,为lgn,在9/10处,为lg10/9n,总体趋向于nlgn
平均情况中好坏交替情况,坏情况趋向于被同化成好情况