程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 快速排序法

快速排序法

編輯:關於C語言

     快速排序是對冒泡排序的一種改進。它的基本思想是:通過一趟排序將要排序的數據分割成獨立的兩部分,

其中一部分的所有數據都比另外一不部分的所有數據都要小,然後再按次方法對這兩部分數據分別進行快速排序,

整個排序過程可以遞歸進行,以此達到整個數據變成有序序列。


一趟快速排序的算法是:

  1)、設置兩個變量I、J,排序開始的時候I:=1,J:=N;

  2)以第一個數組元素作為關鍵數據,賦值給X,即X:=A[1];

  3)、從J開始向前搜索,即由後開始向前搜索J:=J-1),找到第一個小於X的值,兩者交換;

  4)、從I開始向後搜索,即由前開始向後搜索I:=I+1),找到第一個大於X的值,兩者交換;

  5)、重復第3、4步,直到I=J;


改進後的快速排序:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void sort(int array[],int start,int end)
{
    if(start<end)
    {
        int value=array[start];
        int low=start;
        int high=end;
        while(low<high)
        {
            while((low<high)&& value<array[high])
                high--;
            array[low]=array[high];
            while((low<high)&& value>array[low])
                            low++;
                        array[high]=array[low];
        }
        array[low]=value;
        sort(array,start,low-1);
        sort(array,low+1,end);
    }
}
int main(int argc, char **argv) {
    int array[]={2,4,9,3,6};
    int i=0;
  sort(array,0,4);
    for(;i<5;i++)
    {
      printf("%d\t",array[i]);
    }
    return 0;
}


參考鏈接:http://blog.csdn.net/sws9999/article/details/2791812


本文出自 “技術在於堅持” 博客,請務必保留此出處http://minilinux.blog.51cto.com/4499123/1285015

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved