排序之快速排序

來源:互聯網
上載者:User

快速排序(Quicksort)是對冒泡排序的一種改進。由C.
A. R. Hoare在1962年提出。它的基本思想是:通過一趟排序將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排序,整個排序過程可以遞迴進行,以此達到整個資料變成有序序列。

c語言實現如下:

#include <stdio.h>    //列印數組  void display(int array[],int size){          printf("the array is:");          int i;          for(i=0;i<size;i++){                  printf("%d ",array[i]);          }          printf("\n");  }    //分割函數  int cut(int array[],int left,int right){      //將數組的第一個數作為基準值          int baseNum = array[left];            while(left < right){        //從數組的右側開始,找到一個比基準值小的數                  while(left < right && array[right] >= baseNum){                          right--;                  }          //將該數賦給left                  array[left] = array[right];            //從數組的左側開始,找到一個比基準值大的數                  while(left < right && array[left] <= baseNum){                          left++;                  }          //將該數賦給right                  array[right] = array[left];          }  //最後將基準值賦給left或者right,此時left=rightarray[left] = baseNum;//返回left或者right return left;}//快速排序組函數,left和right分別為要進行排序的數組的左右邊界void quick(int array[],int left,int right){ if(left < right){//分割函數,返回基準值在array中的下標 int cutPoint = cut(array,left,right);//對基準值左邊的數組進行快速排序 quick(array,left,cutPoint-1);//對基準值右邊的數組進行快速排序  quick(array,cutPoint+1,right); }}int main(void){int array[10]={34,45,1,39,21,68,65,100,4,51}; display(array,10);//快速排序 quick(array,0,9); display(array,10);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.