當前位置:首頁 » 編程語言 » c語言if冒泡排序

c語言if冒泡排序

發布時間: 2022-08-01 02:02:28

1. c語言編程:對10個數冒泡排序(升序)。

#include<stdio.h>

intmain(){

intnumber[10]={95,45,15,78,84,51,24,12,34,23};

for(int j=0;j< 9;j++)

for(int i=0;i< 9 -j;i++) {

if(a[i]>a[i+1]) {

int temp=a[i];

a[i]=a[i+1];

a[i+1]=temp; }

}

for(int i=0;i< 10;i++){

printf(「%d」,a[i]); }

}

插入排序

已知一組升序排列數據a[1]、a[2]、……a[n],一組無序數據b[1]、b[2]、……b[m],需將二者合並成一個升序數列。

首先比較b[1]與a[1]的值,若b[1]大於a[1],則跳過,比較b[1]與a[2]的值,若b[1]仍然大於a[2],則繼續跳過,直到b[1]小於a數組中某一數據a[x],則將a[x]~a[n]分別向後移動一位,將b[1]插入到原來a[x]的位置這就完成了b[1]的插入。

b[2]~b[m]用相同方法插入。

快速排序

快速排序是大家已知的常用排序演算法中最快的排序方法。已知一組無序數據a[1]、a[2]、……a[n],需將其按升序排列。首先任取數據a[x]作為基準。

比較a[x]與其它數據並排序,使a[x]排在數據的第k位,並且使a[1]~a[k-1]中的每一個數據<a[x],a[k+1]~a[n]中的每一個數據>a[x],然後採用分治的策略分別對a[1]~a[k-1]和a[k+1]~a[n]兩組數據進行快速排序。

希爾排序

已知一組無序數據a[1]、a[2]、……a[n],需將其按升序排列。

首先取一增量d(d<n),將a[1]、a[1+d]、a[1+2d]……列為第一組,a[2]、a[2+d]、a[2+2d]……列為第二組……,a[d]、a[2d]、a[3d]……列為最後一組以次類推,在各組內用插入排序,然後取d'<d,重復上述操作,直到d=1。

2. C語言冒泡排序法代碼

冒泡排序是排序演算法的一種,思路清晰,代碼簡潔,常被用在大學生計算機課程中。「冒泡」這個名字的由來是因為越大的元素會經由交換慢慢「浮」到數列的頂端,故名。這里以從小到大排序為例進行講解。基本思想及舉例說明


冒泡排序的基本思想就是不斷比較相鄰的兩個數,讓較大的元素不斷地往後移。經過一輪比較就,選出最大的數;經過第2輪比較,就選出次大的數,以此類推。下面以對 3 2 4 1 進行冒泡排序說明。

3. C語言 冒泡排序法

對你需求有點疑問:
1、不要固定數=>理解為:總排序個數是可變的,比如5個數排序,600個數排序。

2、輸入一個排序一次=>理解為:每輸入一個數,這個數就加到要被排序的那組數中,然後對那組數進行一次「冒泡排序」。比如:
輸入1;此時序列為:1;
輸入8;此時序列為:1、8;
輸入5;此時序列為:1、5、8;
但是這個需求與冒泡排序演算法可能有點沖突。因為你要求每次輸入一個數就進行了一次排序,那麼下次輸入的數,是要插入已經排序好的序列中,這已經沒有了「冒泡」的過程,倒變成了插入排序...

3、從後面排序=>不理解:由於你要求輸入一次排序一次,並不是那種等待一組數據輸入完成之後,再進行排序,這已經沒有所謂的前後了啊?

第2條與第3條描述清楚後,我幫你解決...

4. C語言:編寫一個程序用冒泡排序實現升序排列

1、首先打開一個空白的C語言文件,首先先定義一組待排序的數列以及各個變數,接著就是用來處理排序的邏輯:

5. c語言冒泡排序法代碼

冒泡法排序的原理是相鄰的兩個數進行比較,現在以「輸入10個數,對它們按小到大的順序排序」這道題,來展示冒泡法排序。
#include
int main(){
int a[10];
int i,j,t;
printf (" input 10 numbers: \n");
for (i=0;i<10;i++)
scanf("%d",&a[i] );
printf ("\n");
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("the sorted numbers: \n");
for(i=0;i<10;i++)
printf( "%d",a[i]);
printf("\n");
return 0;
}

6. C語言冒泡排序

#include<stdio.h>

#defineMAX10//
#include<stdio.h>
#defineN10
intmain(){
inti,j,t,a[N];
printf("pleaseinputtennumbers: ");
for(i=0;i<N;i++)
scanf("%d",&a[i]); //原來只輸入了一個數!!!
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
if(a[i]<a[j]) //截圖結果是用>號
{
t=a[j];
a[j]=a[i];
a[i]=t;
}
}
}
printf("outputthesortednumbers: ");
for(i=0;i<N;i++)
printf("%d",a[i]);
printf(" ");
return0;
}

7. C語言冒泡排序法

冒泡排序每一趟排序把最大的放在最右邊。

比如:

87 12 56 45 78

87和12交換:12 87 56 45 78

87和56交換: 56 87 45 78

87和45交換: 45 87 78

87和78交換: 78 87

到此第一趟排序結束,接下來的每一趟排序都是這樣。

#include<stdio.h>
voidPrint(int*num,intn)
{
inti;
for(i=0;i<n;i++)
printf("%d",num[i]);
puts(" ");
return;
}
voidBubble_Sort(int*num,intn)
{
inti,j;
for(i=0;i<n;i++)
{
for(j=0;i+j<n-1;j++)
{
if(num[j]>num[j+1])
{
inttemp=num[j];
num[j]=num[j+1];
num[j+1]=temp;
}
Print(num,n);
}
}
return;
}
intmain()
{
intnum[8]={87,12,56,45,78};
Bubble_Sort(num,5);
return0;
}

8. 用c語言編寫冒泡排序演算法

#include<stdio.h>
void main(){
int i,j,score[10],count=0,temp,sum=0;
double avg;
for(i=0;i<10;i++){ //輸入10個學生的成績,並求著10個學生的成績總和
printf("請輸入第%d個學生的成績:",(i+1));
scanf("%d",&score[i]);
sum+=score[i];
}
avg=sum*1.0/10; //求著這10個學生成績的平均值
for(i=0;i<10;i++){ //統計小於平均分的學生人數
if(score[i]<avg){
count++;
}
}
for(i=0;i<10;i++){ //使用冒泡排序對這10個學生的成績逆序排序
for(j=0;j<9-i;j++){
if(score[j]<score[j+1]){
temp=score[j];
score[j]=score[j+1];
score[j+1]=temp;
}
}
}
printf("最高成績:%d分,平均成績:%.2f分,低於平均成績的人數是:%d人!\n",score[0],avg,count);
}

9. C語言冒泡排序。

#include<stdio.h>

void main()

{

int a[10];

int i,j,t;

printf("input 10 numbers: ");

for(i=0;i<10;i++)

scanf("%d",&a[i]);

for(j=0;j<9;j++) /*進行9次循環 實現9趟比較*/

for(i=0;i<9-j;i++) /*在每一趟中進行9-j次比較*/

if(a[i]>a[i+1]) /*相鄰兩個數比較,想降序只要改成a[i]<a[i+1]*/

{

t=a[i];

a[i]=a[i+1];

a[i+1]=t;

}

printf("the sorted numbers: ");

for(i=0;i<10;i++)

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


}

(9)c語言if冒泡排序擴展閱讀:

冒泡排序演算法的運作

1、比較相鄰的元素。如果第一個比第二個大(小),就交換他們兩個。

2、對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大(小)的數。

3、針對所有的元素重復以上的步驟,除了最後已經選出的元素(有序)。

4、持續每次對越來越少的元素(無序元素)重復上面的步驟,直到沒有任何一對數字需要比較,則序列最終有序。

簡單的表示

#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 ", a[i]);

}

return 0;

}

參考資料來源:冒泡排序-網路

熱點內容
我的世界伺服器房間號2020電腦版 發布:2025-01-24 01:28:05 瀏覽:398
微信提示存儲空間不足 發布:2025-01-24 01:19:53 瀏覽:963
安卓電腦管家如何清除緩存 發布:2025-01-24 00:55:42 瀏覽:148
怎麼上傳歌曲到qq音樂 發布:2025-01-24 00:45:30 瀏覽:65
養貓用什麼配置 發布:2025-01-24 00:37:58 瀏覽:812
pythongps 發布:2025-01-24 00:37:51 瀏覽:813
辦公編程滑鼠 發布:2025-01-24 00:37:07 瀏覽:386
wpa加密類型 發布:2025-01-24 00:35:58 瀏覽:960
如何用批處理實現ftp映射盤符 發布:2025-01-24 00:25:45 瀏覽:954
win7sql版本 發布:2025-01-24 00:22:16 瀏覽:499