新聞中心
C語言冒泡排序法是怎么排序的?
C語言冒泡排序法的排序規(guī)則:
創(chuàng)新互聯(lián)于2013年創(chuàng)立,公司以成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、系統(tǒng)開發(fā)、網(wǎng)絡(luò)推廣、文化傳媒、企業(yè)宣傳、平面廣告設(shè)計等為主要業(yè)務(wù),適用行業(yè)近百種。服務(wù)企業(yè)客戶超過千家,涉及國內(nèi)多個省份客戶。擁有多年網(wǎng)站建設(shè)開發(fā)經(jīng)驗。為企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、創(chuàng)意設(shè)計、宣傳推廣等服務(wù)。 通過專業(yè)的設(shè)計、獨特的風(fēng)格,為不同客戶提供各種風(fēng)格的特色服務(wù)。
將被排序的記錄數(shù)組R[1..n]垂直排列,每個記錄R看作是重量為R.key的氣泡。根據(jù)輕氣泡不能在重氣泡之下的原則,從下往上掃描數(shù)組R:凡掃描到違反本原則的輕氣泡,就使其向上"飄浮"。如此反復(fù)進行,直到最后任何兩個氣泡都是輕者在上,重者在下為止。
初始 R[1..n]為無序區(qū)。
第一趟掃描 從無序區(qū)底部向上依次比較相鄰的兩個氣泡的重量,若發(fā)現(xiàn)輕者在下、重者在上,則交換二者的位置。
即依次比較(R[n],R[n-1]),(R[n-1],R[n-2]),…,(R[2],R[1]);對于每對氣泡(R[j+1],R[j]),若R[j+1].keyR[j].key,則交換R[j+1]和R[j]的內(nèi)容。 第一趟掃描完畢時,"最輕"的氣泡就飄浮到該區(qū)間的頂部,即關(guān)鍵字最小的記錄被放在最高位置R[1]上。
第二趟掃描 掃描R[2..n]。
掃描完畢時,"次輕"的氣泡飄浮到R[2]的位置上…… 最后,經(jīng)過n-1 趟掃描可得到有序區(qū)R[1..n] 注意: 第i趟掃描時,R[1..i-1]和R[i..n]分別為當(dāng)前的有序區(qū)和無序區(qū)。掃描仍是從無序區(qū)底部向上直至該區(qū)頂部。掃描完畢時,該區(qū)中最輕氣泡飄浮到頂部位置R上,結(jié)果是R[1..i]變?yōu)樾碌挠行騾^(qū)。
c語言冒泡排序的編程為:
#include stdio.h
void sort(int *a,int len)
{int i=0;
int j;
int t;
for(i=0;ilen-1;i++)[1]
{
for(j=0;jlen-i-1;j++)
{
if(a[j]a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
}
int main(int argc, char *argv[])
{
int a[10]={
-999,2,3,77,12,88,0,-8,99,100
};
int i=0;
sort(a,10);
for(i=0;i10;i++)
{
printf("%d ",a[i]);
}
return 0;
}
C語言課程作業(yè),通過定義函數(shù)實現(xiàn)冒泡排序過程。
void sortMaopao(int *arr,int n)
{
int i,j,tmp;
if(n100)
return ;
for(i=0;in-1;i++)
{
for(j=i+1;jn;j++)
{
if(*(arr+i)*(arr+j))
{
tmp=*(arr+i);
*(arr+i)=*(arr+j);
*(arr+j)=tmp;
}
}
}
}
這個函數(shù)可以幫你實現(xiàn)由大到小排序,如果由小到大的話只需把if(*(arr+i)*(arr+j))這一句里面的 改成 就行了,輸出的話可以在主函數(shù)調(diào)用之后再打印輸出就行。
C語言:編寫函數(shù)用冒泡排序法對數(shù)組中的數(shù)據(jù)進行從小到大的排序.
int?i,j,temp;
for(i=0;in-1;i++)
{
for(j=0;jn-1-i;j++)
{
if(a[j]a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
之間寫這個
C語言冒泡排序法是什么?
冒泡排序法,是C語言常用的排序算法之一,意思是對一組數(shù)字進行從大到小或者從小到大排序的一種算法。
具體方法是:
相鄰數(shù)值兩兩交換。從第一個數(shù)值開始,如果相鄰兩個數(shù)的排列順序與我們的期望不同,則將兩個數(shù)的位置進行交換(對調(diào));如果其與我們的期望一致,則不用交換。重復(fù)這樣的過程,一直到最后沒有數(shù)值需要交換,則排序完成。
C語言常見的排序算法:
1、冒泡排序
基本思想:比較相鄰的兩個數(shù),如果前者比后者大,則進行交換。每一輪排序結(jié)束,選出一個未排序中最大的數(shù)放到數(shù)組后面。
2、快速排序
基本思想:選取一個基準(zhǔn)元素,通常為數(shù)組最后一個元素(或者第一個元素)。從前向后遍歷數(shù)組,當(dāng)遇到小于基準(zhǔn)元素的元素時,把它和左邊第一個大于基準(zhǔn)元素的元素進行交換。在利用分治策略從已經(jīng)分好的兩組中分別進行以上步驟,直到排序完成。
3、直接插入排序
基本思想:和交換排序不同的是它不用進行交換操作,而是用一個臨時變量存儲當(dāng)前值。當(dāng)前面的元素比后面大時,先把后面的元素存入臨時變量,前面元素的值放到后面元素位置,再到最后把其值插入到合適的數(shù)組位置。
4、直接選擇排序
基本思想:依次選出數(shù)組最小的數(shù)放到數(shù)組的前面。首先從數(shù)組的第二個元素開始往后遍歷,找出最小的數(shù)放到第一個位置。再從剩下數(shù)組中找出最小的數(shù)放到第二個位置。以此類推,直到數(shù)組有序。
以上內(nèi)容參考? ?百度百科-排序算法、百度百科-c語言冒泡排序
C語言冒泡排序。
#includestdio.h
void main()
{
int a[10];
int i,j,t;
printf("input 10 numbers:\n");
for(i=0;i10;i++)
scanf("%d",a[i]);
for(j=0;j9;j++) /*進行9次循環(huán) 實現(xiàn)9趟比較*/
for(i=0;i9-j;i++) /*在每一趟中進行9-j次比較*/
if(a[i]a[i+1]) /*相鄰兩個數(shù)比較,想降序只要改成a[i]a[i+1]*/
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf("the sorted numbers:\n");
for(i=0;i10;i++)
printf(" %d",a[i]);
}
擴展資料:
冒泡排序算法的運作
1、比較相鄰的元素。如果第一個比第二個大(?。徒粨Q他們兩個。
2、對每一對相鄰元素作同樣的工作,從開始第一對到結(jié)尾的最后一對。這步做完后,最后的元素會是最大(小)的數(shù)。
3、針對所有的元素重復(fù)以上的步驟,除了最后已經(jīng)選出的元素(有序)。
4、持續(xù)每次對越來越少的元素(無序元素)重復(fù)上面的步驟,直到?jīng)]有任何一對數(shù)字需要比較,則序列最終有序。
簡單的表示
#include stdio.h
void swap(int *i, int *j)
{
int temp = *i;
*i = *j;
*j = temp;
}
int main()
{
int a[10] = {2,1,4,5,6,9,7,8,7,7};
int i,j;
for (i = 0; i 10; i++)
{
for (j = 9; j i; j--)//從后往前冒泡
{
if (a[j] a[j-1])
{
swap(a[j], a[j-1]);
}
}
}
for (i = 0; i 10; i++)
{
printf("%d\n", a[i]);
}
return 0;
}
參考資料來源:冒泡排序-百度百科
急需一個用C語言函數(shù)寫的冒泡排序法,最好是可以排數(shù)字也可以排字母
#includestdio.h
#includestdlib.h
void mao_pao(int *a,int n)
{
int i,j,temp,flag;
for(i=0;in-1flag;++i)
{
flag=0;
for(j=0;jn-1;++j)
{
if(a[j]a[j+1])
{
flag=1;
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
void main()
{
int *a,i,n;
a=(int *)malloc(100);
if(NULL==a)
{
printf("allocation failture\n");
exit(1);
}
printf("請輸入你要排序的元素的個數(shù)\n");
scanf("%d",n);
printf("現(xiàn)在開始輸入%d個元素\n",n);
for(i=0;i!=n;++i)
scanf("%d",a[i]);
mao_pao(a,n);
printf("排序后為:\n");
for(i=0;i!=n;++i)
printf("%d ",a[i]);
printf("\n");
free(a);
}
這是排數(shù)字的,要排字母的話,只需把a的類型改一下,和輸出輸入的格式改一下就ok了
當(dāng)前題目:C語言用函數(shù)求冒泡排序 c語言用函數(shù)實現(xiàn)冒泡排序和選擇排序
本文鏈接:http://www.dlmjj.cn/article/hejehi.html