程序如下:

創(chuàng)新互聯(lián)公司主營洛江網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,app軟件定制開發(fā),洛江h(huán)5成都小程序開發(fā)搭建,洛江網(wǎng)站營銷推廣歡迎洛江等地區(qū)企業(yè)咨詢
#include stdio.h
int main ()
{
int a[10];
int i, j, t;
printf ("請輸入十個數(shù):\n");
for (i = 0; i 10; i++)
{
printf ("a[%d]=", i+1);
scanf ("%d",a[i]);
}
for (j = 0;j 9; j++)
for (i = 0; i 9 - j; i++)
if (a[i] a[i+1])
{
t = a[i];
a[i] = a[i+1];
a[i+1] = t;
}
printf ("由小到大的順序為:\n");
for (i = 0; i 10; i++)
{
printf ("%d,",a[i]);
}
printf ("\n");
return 0;
}
運行結(jié)果
請輸入十個數(shù):
a[1]=7
a[2]=8
a[3]=9
a[4]=6
a[5]=5
a[6]=4
a[7]=1
a[8]=2
a[9]=3
a[10]=99
由小到大的順序為:
1,2,3,4,5,6,7,8,9,99。
冒泡排序算法的原理如下:
1、比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
2、對每一對相鄰元素做同樣的工作,從開始第一對到結(jié)尾的最后一對。在這一點,最后的元素應該會是最大的數(shù)。
3、針對所有的元素重復以上的步驟,除了最后一個。
4、持續(xù)每次對越來越少的元素重復上面的步驟,直到?jīng)]有任何一對數(shù)字需要比較。
擴展資料:
冒泡排序的思想:
首先,從表頭開始往后掃描數(shù)組,在掃描過程中逐對比較相領兩個元素的大小。若相鄰兩個元素中,前面的元素大于后面的元素,則將它們互換,?稱之為清去了一個逆序。
在掃描過程中,不斷地將兩相鄰元素中的大者往后移動,最后就將數(shù)組中的最大者換到了表的最后,這正是數(shù)組中最大元素應有的位置。
然后,在剩下的數(shù)組元素中(n-1個元素)重復上面的過程,將次小元素放到倒數(shù)第2個位置。不斷重復上述過程,直到剩下的數(shù)組元素為0為止,此時的數(shù)組就變?yōu)榱擞行颉?/p>
假設數(shù)組元素的個數(shù)為西,在最壞情況下需要的比較總次數(shù)為:?(n-1)+(n-?2)...+2+1)-?n(n-1)/2。
參考資料來源:百度百科-冒泡排序
#include stdio.h
#include stdlib.h
void sort(char s[], int n);? ? ? ? ? ? ? ? ? ? ? //定義排序函數(shù)
int main()
{
char str[11];
printf("Please enter 10 charactor: ");? ? ? ?//輸入10個字符
gets(str);
sort(str, 10);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//調(diào)用排序函數(shù)
system("pause");
return 0;
}
//排序函數(shù)(起泡法)
void sort(char s[], int n)
{
for (int i=0; in-1; i++)
for (int j=0, t; jn-1-i; s[j]s[j+1]?t=s[j],s[j]=s[j+1],s[j+1]=t, j++ :j++);
printf("Sort array: ");
puts(s);
}
擴展資料:
printf函數(shù)使用注意事項
1、域?qū)?/p>
%d:按整型數(shù)據(jù)的實際長度輸出。
如果想輸出指定寬度可以指定域?qū)挘?md--gt;m域?qū)?打印出來以后,在控制臺上,顯示m位;
如果我們要打印的數(shù)的位數(shù)如果超過我們設定m則原樣輸出;
如果我們要打印的數(shù)的位數(shù)如果小于我們設定的位數(shù),則補空白,具體如下:
如果m為正數(shù),則左對齊(左側(cè)補空白);
如果m為負數(shù),則右對齊(右側(cè)補空白)。
2、轉(zhuǎn)義字符
如果想輸出字符"%",則應該在“格式控制”字符串中用連續(xù)兩個%表示。
如:printf("%f%%",1.0/3);輸出結(jié)果:0.333333%。
#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、比較相鄰的元素。如果第一個比第二個大(小),就交換他們兩個。
2、對每一對相鄰元素作同樣的工作,從開始第一對到結(jié)尾的最后一對。這步做完后,最后的元素會是最大(小)的數(shù)。
3、針對所有的元素重復以上的步驟,除了最后已經(jīng)選出的元素(有序)。
4、持續(xù)每次對越來越少的元素(無序元素)重復上面的步驟,直到?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ù)值兩兩交換。從第一個數(shù)值開始,如果相鄰兩個數(shù)的排列順序與我們的期望不同,則將兩個數(shù)的位置進行交換(對調(diào));如果其與我們的期望一致,則不用交換。重復這樣的過程,一直到最后沒有數(shù)值需要交換,則排序完成。
C語言常見的排序算法:
1、冒泡排序
基本思想:比較相鄰的兩個數(shù),如果前者比后者大,則進行交換。每一輪排序結(jié)束,選出一個未排序中最大的數(shù)放到數(shù)組后面。
2、快速排序
基本思想:選取一個基準元素,通常為數(shù)組最后一個元素(或者第一個元素)。從前向后遍歷數(shù)組,當遇到小于基準元素的元素時,把它和左邊第一個大于基準元素的元素進行交換。在利用分治策略從已經(jīng)分好的兩組中分別進行以上步驟,直到排序完成。
3、直接插入排序
基本思想:和交換排序不同的是它不用進行交換操作,而是用一個臨時變量存儲當前值。當前面的元素比后面大時,先把后面的元素存入臨時變量,前面元素的值放到后面元素位置,再到最后把其值插入到合適的數(shù)組位置。
4、直接選擇排序
基本思想:依次選出數(shù)組最小的數(shù)放到數(shù)組的前面。首先從數(shù)組的第二個元素開始往后遍歷,找出最小的數(shù)放到第一個位置。再從剩下數(shù)組中找出最小的數(shù)放到第二個位置。以此類推,直到數(shù)組有序。
以上內(nèi)容參考? ?百度百科-排序算法、百度百科-c語言冒泡排序
分享題目:c語言調(diào)用函數(shù)起泡法排序,c語言調(diào)用函數(shù)冒泡排序
網(wǎng)站路徑:http://chinadenli.net/article44/phiihe.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供標簽優(yōu)化、網(wǎng)站收錄、企業(yè)網(wǎng)站制作、定制網(wǎng)站、定制開發(fā)、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)