排序_Quick_Sort(快速排序)

來源:互聯網
上載者:User

快速排序的主要的思想就是在於劃分,就是先找一個關索引值,然後運用什麼樣的方法把資料分成小於關索引值的在關鍵的左邊,

而大於關索引值的在關索引值的右邊. 然後分配好了之後就可以直接遞迴調用了.

貼出我自己寫的代碼,這是根據資料結構的基本思想寫出來的:

#include <stdio.h>#include <string.h>#include <math.h>#include <iostream>#include <algorithm>#include <string>using namespace std;int N;int a[10000];void Quick_Sort (int  low, int high){if (low < high) //這個注意一定要寫上,因為如果沒有這個條件的話,將會出現無限迴圈的情況 {int i = low; // 這是兩個動態指標 int j = high;int pivot = a[low]; // 將這個關鍵之存到pivot裡面 int pos = low; //這個指標是指向空缺的可以插入的位置上 while (i < j){while (a[j] > pivot){j--;}a[pos] = a[j];a[j] = pivot;pos = j;while (a[i] < pivot){i++;}a[pos] = a[i];a[i] = pivot;pos = i;}Quick_Sort (low, pos - 1); // 這是遞迴調用演算法 Quick_Sort (pos + 1, high);}}int main(){cout << "Input the number that you want be sorted : " << endl;cin >> N;cout << "Please input the numbers : " << endl;for (int i = 0; i < N; i++){cin >> a[i];}Quick_Sort (0, N - 1);for (int  i = 0; i < N; i++){cout << a[i] << " ";}cout << endl;system ("pause");return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.