#includeiostream
創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比大方網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式大方網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋大方地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴。
#includealgorithm
using?namespace?std;
int?main()
{
int?a[10];
for(int?i=0;i10;i++)
cina[i];
sort(a,a+10);
for(int?i=0;i10;i++)
couta[i]"?";
coutendl;?
}
c++ algorithm庫(kù)里自帶sort非遞減排序
#includestdio.h
#includestring.h
void?Sort(char?s[][51],int?n)?{
char?t[51];
int?i,j,k;
for(i?=?0;?i??n?-?1;?++i)?{
k?=?i;
for(j?=?i?+?1;?j??n;?++j)?{
if(strcmp(s[k],s[j])??0)
k?=?j;
}
if(k?!=?i)?{
strcpy(t,s[i]);
strcpy(s[i],s[k]);
strcpy(s[k],t);
}
}
}
int?main()?{
char?s[][51]?=?{"continue","break","for","while","struct","swicth","edit","copy","past","please"};
int?i,n?=?10;
printf("排序前:\n");
for(i?=?0;?i??n;?++i)
printf("%s\n",s[i]);
Sort(s,10);
printf("\n排序后:\n");
for(i?=?0;?i??n;?++i)
printf("%s\n",s[i]);
printf("\n");
return?0;
}
for(j=i+1;jn;j++)
{
if(a[j+1]a[i])//a[j+1]改成a[j]
{
t=a[i];
a[i]=a[j+1];//a[j+1]改成a[j]
a[j+1]=t;//a[j+1]改成a[j]
}
}
//希望對(duì)樓主有小小的幫助。。。
//排序的算法是二分法,N的對(duì)數(shù)時(shí)間復(fù)雜度。。。
//如果有疑問(wèn),我們可以再探討。。。
#includestdlib.h
#includestring.h
#includestdio.h
bool merge(int * array,int p,int q,int r)
{
if(!(pqr)p=0r=sizeof(array)/sizeof(array[0])-1)
{
return false;
}
int * left =new int[q-p+1];
int * right=new int[r-q];
memcpy(left,array+p,sizeof(int)/sizeof(char)*(q-p+1));
memcpy(right,array+q+1,sizeof(int)/sizeof(char)*(r-q));
int left_index=0,right_index=0,left_max_index,right_max_index;
left_max_index=q-p+1;
right_max_index=r-q;
for(int k=p;k=rleft_indexleft_max_indexright_indexright_max_index;++k)
{
if(left[left_index]=right[right_index])
{
array[k]=left[left_index];
++left_index;
}
else
{
array[k]=right[right_index];
++right_index;
}
}
if(left_index==left_max_index)
{
for(;k=rright_indexright_max_index;++k,++right_index)
{
array[k]=right[right_index];
}
}
else if(right_index==right_max_index)
{
for(;k=rleft_indexleft_max_index;++k,++left_index)
{
array[k]=left[left_index];
}
}
delete left;
delete right;
return true;
}
void merge_sort(int * array,int p,int r)
{
if(pr)
{
int q=(r+p)/2;
merge_sort(array,p,q);
merge_sort(array,q+1,r);
merge(array,p,q,r);
}
}
void main()
{
int size,index,* array;
//printf("請(qǐng)輸入元素個(gè)數(shù):");
scanf("%d",size);
array=(int*)malloc(size*sizeof(int));
for(index=0;indexsize;index++)
{
//printf("請(qǐng)輸入第%d元素:",index+1);
scanf("%d",array[index]);
}
merge_sort(array,0,size-1);
for(index=0;indexsize;index++)
{
printf("%d ",array[index]);
}
printf("\n");
}
SeqList L;//L只是個(gè)默認(rèn)構(gòu)造,在后面執(zhí)行基本是統(tǒng)一的0值;執(zhí)行前應(yīng)該設(shè)置實(shí)體數(shù)據(jù)
L=Selection(L.length);//改為L(zhǎng)=Selection(L);原函數(shù)調(diào)用與函數(shù)定義不符,有語(yǔ)法錯(cuò)誤;L.length是個(gè)int 類型,函數(shù)定義的參數(shù)類型是SeqList;
SeqList Selection(SeqList L) 內(nèi)部邏輯不夠簡(jiǎn)捷,多多練習(xí);
if (L.data[j]L.data [i]){}//可直接交換,k標(biāo)志沒(méi)什么作用。
1、冒泡排序(最常用)
冒泡排序是最簡(jiǎn)單的排序方法:原理是:從左到右,相鄰元素進(jìn)行比較。每次比較一輪,就會(huì)找到序列中最大的一個(gè)或最小的一個(gè)。這個(gè)數(shù)就會(huì)從序列的最右邊冒出來(lái)。(注意每一輪都是從a[0]開始比較的)
以從小到大排序?yàn)槔?,第一輪比較后,所有數(shù)中最大的那個(gè)數(shù)就會(huì)浮到最右邊;第二輪比較后,所有數(shù)中第二大的那個(gè)數(shù)就會(huì)浮到倒數(shù)第二個(gè)位置……就這樣一輪一輪地比較,最后實(shí)現(xiàn)從小到大排序。
2、雞尾酒排序
雞尾酒排序又稱雙向冒泡排序、雞尾酒攪拌排序、攪拌排序、漣漪排序、來(lái)回排序或快樂(lè)小時(shí)排序, 是冒泡排序的一種變形。該算法與冒泡排序的不同處在于排序時(shí)是以雙向在序列中進(jìn)行排序。
原理:數(shù)組中的數(shù)字本是無(wú)規(guī)律的排放,先找到最小的數(shù)字,把他放到第一位,然后找到最大的數(shù)字放到最后一位。然后再找到第二小的數(shù)字放到第二位,再找到第二大的數(shù)字放到倒數(shù)第二位。以此類推,直到完成排序。
3、選擇排序
思路是設(shè)有10個(gè)元素a[1]-a[10],將a[1]與a[2]-a[10]比較,若a[1]比a[2]-a[10]都小,則不進(jìn)行交換。若a[2]-a[10]中有一個(gè)以上比a[1]小,則將其中最大的一個(gè)與a[1]交換,此時(shí)a[1]就存放了10個(gè)數(shù)中最小的一個(gè)。同理,第二輪拿a[2]與a[3]-a[10]比較,a[2]存放a[2]-a[10]中最小的數(shù),以此類推。
4、插入排序
插入排序是在一個(gè)已經(jīng)有序的小序列的基礎(chǔ)上,一次插入一個(gè)元素*
一般來(lái)說(shuō),插入排序都采用in-place在數(shù)組上實(shí)現(xiàn)。
具體算法描述如下:
⒈ 從第一個(gè)元素開始,該元素可以認(rèn)為已經(jīng)被排序
⒉ 取出下一個(gè)元素,在已經(jīng)排序的元素序列中從后向前掃描
⒊ 如果該元素(已排序)大于新元素,將該元素移到下一位置
⒋ 重復(fù)步驟3,直到找到已排序的元素小于或者等于新元素的位置
⒌ 將新元素插入到下一位置中
⒍ 重復(fù)步驟2~5
網(wǎng)頁(yè)名稱:c語(yǔ)言主函數(shù)排序 C語(yǔ)言函數(shù)排序
文章網(wǎng)址:http://chinadenli.net/article0/dodigoo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、自適應(yīng)網(wǎng)站、定制網(wǎng)站、靜態(tài)網(wǎng)站、企業(yè)網(wǎng)站制作、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)