快速排序法又叫折半法


快速排序法

  • 快速排序法是冒泡法一種改進。
  • 它是通過一趟的比較,把將要排序的數據分割成獨立的兩部分,其中一部分的所有數據都要比另一組的數據都要小。
  • 整個排序可用遞歸進行。
 1 #include<stdio.h>
 2 
 3 //快速排序法
 4 void quick_sort(int a[],int end,int start);
 5 int main()
 6 {
 7     int i;
 8     int s[6];
 9     printf("please enter five numbers:\n");
10     for(i=1;i<6;i++)
11     {
12         scanf("%d",&s[i]);
13     }
14 
15     quick_sort(s,5,1);
16 
17     printf("after number:\n");
18     for(i=1;i<6;i++)
19     {
20         printf("%4d",s[i]);
21     }
22     printf("\n");
23 }
24 
25 void quick_sort(int a[],int end,int start)
26 {
27     int i,j;
28     i=start;
29     j=end;
30     
31 
32     a[0]=a[i];
33     while(i<j)
34     {
35 
36         while(a[j]>=a[0]  && j>i)
37         {
38             j--;
39         }
40         if(i<j)
41         {
42             a[i]=a[j];
43             i++;
44         }
45         while(a[i]<=a[0]  &&  i<j)
46         {
47             i++;
48         }
49         if(i<j)
50         {
51             a[j]=a[i];
52             j--;
53         }
54     }
55     a[j]=a[0];
56     if(i<end)
57         quick_sort(a,end,i+1);
58     if(i>start)
59         quick_sort(a,i-1,start);
60 
61 
62 }

快速排序法細節較多比較容易錯。

大體的思想就是:選取第一個元素為基准,和之后每一個元素比較,小的放前面,然后和之前的元素比較。之后得到兩個無序的小數列,和大數列,然后使用遞歸 。

 

下面嘗試不適用遞歸的算法

目前不會 哈哈哈


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM