真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

快速排序c語言排序函數(shù),c語言快速排序庫函數(shù)

C語言快速排序

#includestdio.hvoid quickSort(int *p,int head,int tail)

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比青縣網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式青縣網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋青縣地區(qū)。費用合理售后完善,十多年實體公司更值得信賴。

{

int low=head,high=tail;

int s=p[head];

if(head=tail)return;

while(lowhigh){

while(lowhighp[high]s)high--;

if(lowhigh)p[low++]=p[high];

while(lowhighp[low]=s)low++;

if(lowhigh)p[high--]=p[low];

}p[low]=s;

quickSort(p,head,low-1);quickSort(p,low+1,tail);

}void main()

{

int i=0;

int array[10]={3,7,2,8,6,8,4,3,2,9};

quickSort(array,0,9);

for(i=0; i10; i++)

{

printf("%d ",array[i]);

}

printf("\n");

}

用C語言編寫函數(shù),要實現(xiàn)快速排序算法或者冒泡法

冒泡法排序函數(shù)如下:

void bubble(int a[],int n)

{int i,j,t;

for(i=0;in-1;i++)/*共進行n-1輪*/

for(j=0;jn-1-i;j++)/*每輪在前n-i個數(shù)中比較*/

if(a[j]a[j+1]) /*若相鄰元素逆序*/

{t=a[j]; a[j]=a[j+1];a[j+1]=t;}/*就交換*/

}

void sort(int *a, int left, int right)

{

if(left = right)/*如果左邊索引大于或者等于右邊的索引就代表已經(jīng)整理完成一個組了*/

{

return ;

}

int i = left;

int j = right;

int key = a[left];

while(i j) /*控制在當組內(nèi)尋找一遍*/

{

while(i j key = a[j])

/*而尋找結(jié)束的條件就是,1,找到一個小于或者大于key的數(shù)(大于或小于取決于你想升

序還是降序)2,沒有符合條件1的,并且i與j的大小沒有反轉(zhuǎn)*/

{

j--;/*向前尋找*/

}

a[i] = a[j];

/*找到一個這樣的數(shù)后就把它賦給前面的被拿走的i的值(如果第一次循環(huán)且key是

a[left],那么就是給key)*/

while(i j key = a[i])

/*這是i在當組內(nèi)向前尋找,同上,不過注意與key的大小關(guān)系停止循環(huán)和上面相反,

因為排序思想是把數(shù)往兩邊扔,所以左右兩邊的數(shù)大小與key的關(guān)系相反*/

{

i++;

}

a[j] = a[i];

}

a[i] = key;/*當在當組內(nèi)找完一遍以后就把中間數(shù)key回歸*/

sort(a, left, i - 1);/*最后用同樣的方式對分出來的左邊的小組進行同上的做法*/

sort(a, i + 1, right);/*用同樣的方式對分出來的右邊的小組進行同上的做法*/

/*當然最后可能會出現(xiàn)很多分左右,直到每一組的i = j 為止*/

}

c語言中排序方法

1、冒泡排序(最常用)

冒泡排序是最簡單的排序方法:原理是:從左到右,相鄰元素進行比較。每次比較一輪,就會找到序列中最大的一個或最小的一個。這個數(shù)就會從序列的最右邊冒出來。(注意每一輪都是從a[0]開始比較的)

以從小到大排序為例,第一輪比較后,所有數(shù)中最大的那個數(shù)就會浮到最右邊;第二輪比較后,所有數(shù)中第二大的那個數(shù)就會浮到倒數(shù)第二個位置……就這樣一輪一輪地比較,最后實現(xiàn)從小到大排序。

2、雞尾酒排序

雞尾酒排序又稱雙向冒泡排序、雞尾酒攪拌排序、攪拌排序、漣漪排序、來回排序或快樂小時排序, 是冒泡排序的一種變形。該算法與冒泡排序的不同處在于排序時是以雙向在序列中進行排序。

原理:數(shù)組中的數(shù)字本是無規(guī)律的排放,先找到最小的數(shù)字,把他放到第一位,然后找到最大的數(shù)字放到最后一位。然后再找到第二小的數(shù)字放到第二位,再找到第二大的數(shù)字放到倒數(shù)第二位。以此類推,直到完成排序。

3、選擇排序

思路是設(shè)有10個元素a[1]-a[10],將a[1]與a[2]-a[10]比較,若a[1]比a[2]-a[10]都小,則不進行交換。若a[2]-a[10]中有一個以上比a[1]小,則將其中最大的一個與a[1]交換,此時a[1]就存放了10個數(shù)中最小的一個。同理,第二輪拿a[2]與a[3]-a[10]比較,a[2]存放a[2]-a[10]中最小的數(shù),以此類推。

4、插入排序

插入排序是在一個已經(jīng)有序的小序列的基礎(chǔ)上,一次插入一個元素*

一般來說,插入排序都采用in-place在數(shù)組上實現(xiàn)。

具體算法描述如下:

⒈ 從第一個元素開始,該元素可以認為已經(jīng)被排序

⒉ 取出下一個元素,在已經(jīng)排序的元素序列中從后向前掃描

⒊ 如果該元素(已排序)大于新元素,將該元素移到下一位置

⒋ 重復步驟3,直到找到已排序的元素小于或者等于新元素的位置

⒌ 將新元素插入到下一位置中

⒍ 重復步驟2~5

用C語言編程實現(xiàn)快速排序算法

給個快速排序你參考參考

/**********************?快速排序?****************************

基本思想:在待排序的n個記錄中任取一個記錄(通常取第一個記錄),

??以該記錄為基準,將當前的無序區(qū)劃分為左右兩個較小的無

??序子區(qū),使左邊的記錄均小于基準值,右邊的記錄均大于或

??等于基準值,基準值位于兩個無序區(qū)的中間位置(即該記錄

??最終的排序位置)。之后,分別對兩個無序區(qū)進行上述的劃

??分過程,直到無序區(qū)所有記錄都排序完畢。

*************************************************************/

/*************************************************************

函數(shù)名稱:static?void?swap(int?*a,?int?*b)

參????數(shù):int?*a---整型指針

??int?*b---整型指針

功????能:交換兩個整數(shù)的位置

返?回?值:無

說????明:static關(guān)鍵字指明了該函數(shù)只能在本文件中使用

**************************************************************/

static?void?swap(int?*a,?int?*b)

{??

int?temp?=?*a;

*a?=?*b;

*b?=?temp;

}

int?quickSortNum?=?0;?//?快速排序算法所需的趟數(shù)

/*************************************************************

函數(shù)名稱:static?int?partition(int?a[],?int?low,?int?high)

參????數(shù):int?a[]---待排序的數(shù)據(jù)

??int?low---無序區(qū)的下限值

??int?high---無序區(qū)的上限值

功????能:完成一趟快速排序

返?回?值:基準值的最終排序位置

說????明:static關(guān)鍵字指明了該函數(shù)只能在本文件中使用

**************************************************************/

static?int?partition(int?a[],?int?low,?int?high)

{

int?privotKey?=?a[low];??//基準元素

while(low??high)

{???//從表的兩端交替地向中間掃描??

while(low??high???a[high]?=?privotKey)???//?找到第一個小于privotKey的值

high--;??//從high所指位置向前搜索,至多到low+1位置??

swap(a[low],?a[high]);??//?將比基準元素小的交換到低端

while(low??high???a[low]?=?privotKey)???//?找到第一個大于privotKey的值

low++;??//從low所指位置向后搜索,至多到high-1位置

swap(a[low],?a[high]);??//?將比基準元素大的交換到高端

}

quickSortNum++;??//?快速排序趟數(shù)加1

return?low;??//?返回基準值所在的位置

}??

/*************************************************************

函數(shù)名稱:void?QuickSort(int?a[],?int?low,?int?high)

參????數(shù):int?a[]---待排序的數(shù)據(jù)

??int?low---無序區(qū)的下限值

??int?high---無序區(qū)的上限值

功????能:完成快速排序算法,并將排序完成的數(shù)據(jù)存放在數(shù)組a中

返?回?值:無

說????明:使用遞歸方式完成

**************************************************************/

void?QuickSort(int?a[],?int?low,?int?high)

{??

if(low??high)

{

int?privotLoc?=?partition(a,?low,?high);?//?將表一分為二??

QuickSort(a,?low,?privotLoc-1);??????????//?遞歸對低子表遞歸排序??

QuickSort(a,?privotLoc+1,?high);?????????//?遞歸對高子表遞歸排序??

}

}

C語言字符串快速排序函數(shù)

#include stdio.h

#includestdlib.h

#includestring.h

int comp(char *a,char *b)

{

while(*a==*b*a*b){a++;b++;}

return (int)*a-(int)*b;

}

int main(void)

{

char s[1000][20];

int i,n;

scanf("%d\n",n);

for(i=0;in;i++)

gets(s[i]);

qsort(s,n,sizeof(s[0]),comp);

printf("\n");

for(i=0;in;i++)

puts(s[i]);

system("pause");

return 0;

}


分享名稱:快速排序c語言排序函數(shù),c語言快速排序庫函數(shù)
本文網(wǎng)址:http://weahome.cn/article/hojphs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部