日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

快速排序及C语言实现

發布時間:2025/4/16 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 快速排序及C语言实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

快速排序的劃分過程還有一個作用就是可以用來尋找中位數

以下是其C語言源碼實現

view plaincopy to clipboardprint?
#include "stdio.h"??
#include "stdlib.h"??
#include "sort.h"??
int partition(int* array,int low,int high)??
{??
??? int i=0;??
??? int pivot = array[low];??
??? while(low < high)??
??? {??
??????? while(low<high && array[high] >= pivot )??
??????? {??
??????????? high--;???
??????? }??
??????? if(low < high)??
??????? {??
??????????? array[low++] = array[high];??
??????? }??
??????????
??????? while(low<high && array[low] <= pivot)??
??????? {??
??????????? low++;??
??????? }??
??????? if(low < high)??
??????? {??
??????????? array[high--] = array[low];??
??????? }??
??? }??
??? array[low] = pivot;??
??? printf("partition--- and pivot is %d /n",pivot);??
??? for(;i<5;i++)??
??? {??
??????? printf("%d ",array[i]);??
??? }??
??? printf("/n");??
??? return low;??
}??
???
void qsort(int *array,int low,int high)??
{??
??? int i;??
??? if(low < high)??
??? {??
??????? i = partition(array,low,high);??
??????? qsort(array, low, i-1);??
??????? qsort(array, i+1, high);??
??? }??
}??
int kthsort(int *array,int low,int high,int k)??
{??
??? int i;??
??? if(low < high)??
??? {??
??????? i= partition(array,low,high);??
??????? if(i==k)??
??????????? return i;??
??????? else if(k < i )??
??????????? kthsort(array,low, i-1,k);??
??????? else???
??????????? kthsort(array,i+1,high,k);??
??? }??
}??
void qsorttest()??
{??
??? int array[5] = {5,7,8,3,2};??
??? int len= 5;??
??? int i=0;??
??? printf("%d /n",len);??
??? for(i=0; i< len; i++)??
??? {??
??????? printf("%d ",array[i]);??
??? }??
??? printf("Hello World!/n");??
??? qsort(array,0,4);??
??????
??? printf("Hello World!/n");??
??? for(i=0; i< len; i++)??
??? {??
??????? printf("%d ",array[i]);??
??? }??
??? printf("Hello World!/n");??
}??
void kthsorttest()??
{??
??? int array[5] = {5,7,8,3,2};??
??? int len= 5;??
??? int i=0;??
??? printf("%d /n",len);??
??? for(i=0; i< len; i++)??
??? {??
??????? printf("%d ",array[i]);??
??? }??
??? printf("The result is %d /n",array[kthsort(array,0,4,3)]);??
??????
}?

?

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/taizhoufox/archive/2010/10/22/5959387.aspx

總結

以上是生活随笔為你收集整理的快速排序及C语言实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。