两个吃奶一个添下面视频_人妻第一页香蕉网_欧美xxxx少妇_妺妺窝人体色www婷婷

1. 復雜度與穩(wěn)定性

算法時間復雜度

最壞情況:O(n^2)

最好情況:O(nlogn)

平均情況:O(nlogn)

 

穩(wěn)定性:不穩(wěn)定排序

2. 過程介紹

快速排序是考察次數(shù)最多的排序,無論是在大學專業(yè)課的期末考試,還是在公司的面試測試題目中,快速排序都極大的被使用,在實際中快速排序也極大的被使用,如STL中的sort底層就是一個快速排序。

首先在數(shù)組中選擇一個基準點,然后分別從數(shù)組的兩端掃描數(shù)組,設兩個指示標志(low指向起始位置,high指向末尾),首先從后半部分開始,如果發(fā)現(xiàn)有元素比該基準點的值小,就交換low和high位置的值,然后從前半部分開始掃描,發(fā)現(xiàn)有元素大于基準點的值,就交換low和high位置的值,如此往復循環(huán),直到low>=high,然后把基準點的值放到high這個位置。一次排序就完成了。

以后采用遞歸的方式分別對前半部分和后半部分排序,當前半部分和后半部分均有序時該數(shù)組就自然有序了。

3.圖示過程

可以看出,在第四躺時已經達到順序,但是任還是會繼續(xù)計算幾趟直到完成全部運算

第一趟

70

50

30

20

10

70

40

60

第二趟

60

50

30

20

10

40

70

70

第三趟

40

50

30

20

10

60

70

70

第四趟

10

20

30

40

50

60

70

70

第五趟

10

20

30

40

50

60

70

70

4. 相關的代碼

#include<iostream>
using namespace std;
 
void qucik_sort(int a[],int low,int high) {
    int i,j,temp;
    i=low;
    j=high;
    if(low<high) {
        temp=a[low];    //設置樞軸
        while(i!=j) {
            while(j>i&&a[j]>=temp) {
                --j;
            }
            if(i<j) {
                a[i]=a[j];
                ++i;
            }
 
            while(i<j&&a[i]<temp) {
                ++i;
            }
            if(i<j) {
                a[j]=a[i];
                --j;
            }
        }
        a[i]=temp;
        qucik_sort(a,low,i-1);
        qucik_sort(a,i+1,high);
    }
}
 
int main() {
    int a[8]= {70,50,30,20,10,70,40,60};
    int n=8;
    qucik_sort(a,0,n-1);
    for(int i=0; i<n; i++) {
        cout<<a[i]<<' ';
    }
    return 0;
}


作業(yè):
1716 數(shù)據結構-快速排序
點贊(0)

C語言網提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習題和答疑,點擊了解:

一點編程也不會寫的:零基礎C語言學練課程

解決困擾你多年的C語言疑難雜癥特性的C語言進階課程

從零到寫出一個爬蟲的Python編程課程

只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程

信息學奧賽或C++選手的 必學C++課程

藍橋杯ACM、信息學奧賽的必學課程:算法競賽課入門課程

手把手講解近五年真題的藍橋杯輔導課程

Dotcpp在線編譯      (登錄可減少運行等待時間)