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

c語言冒泡排序演算法

發布時間: 2023-02-19 02:27:22

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]);


}

(1)c語言冒泡排序演算法擴展閱讀:

冒泡排序演算法的運作

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;

}

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

㈡ 用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);
}

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

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

㈣ c語言冒泡排序是什麼

冒泡排序(Bubble Sort),是一種計算機科學領域的較簡單的排序演算法。
它重復地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重復地進行直到沒有再需要交換,也就是說該數列已經排序完成。
這個演算法的名字由來是因為越大的元素會經由交換慢慢「浮」到數列的頂端,故名。

演算法原理編輯
冒泡排序演算法的運作如下:(從後往前)

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

對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。

針對所有的元素重復以上的步驟,除了最後一個。

持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較
#include<stdio.h>
#define SIZE 8

voidbubble_sort(inta[],intn);

voidbubble_sort(inta[],intn)//n為數組a的元素個數
{
inti,j,temp;
for(j=0;j<n-1;j++)
for(i=0;i<n-1-j;i++)
{
if(a[i]>a[i+1])//數組元素大小按升序排列
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
}
intmain()
{
intnumber[SIZE]={95,45,15,78,84,51,24,12};
inti;
bubble_sort(number,SIZE);
for(i=0;i<SIZE;i++)
{
printf("%d",number[i]);
}
printf("\n");
}

㈤ c語言三種排序

常用的c語言排序演算法主要有三種即冒泡法排序、選擇法排序、插入法排序

一、冒泡排序冒泡排序:

是從第一個數開始,依次往後比較,在滿足判斷條件下進行交換。代碼實現(以降序排序為例)

#include<stdio.h>

int main()

{

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

int temp;

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

{//循環次數

for (int j = 0; j <10 - i-1; j++)

{

if (array[j] < array[j+1])

{//前面一個數比後面的數大時發生交換 temp = array[j];

array[j] = array[j+1];

array[j + 1] = temp;

}

}

} //列印數組 for (int i = 0; i < 10; i++) printf("%2d", array[i]); return 0;}}

二、選擇排序以升序排序為例:

就是在指定下標的數組元素往後(指定下標的元素往往是從第一個元素開始,然後依次往後),找出除指定下標元素外的值與指定元素進行對比,滿足條件就進行交換。與冒泡排序的區別可以理解為冒泡排序是相鄰的兩個值對比,而選擇排序是遍歷數組,找出數組元素與指定的數組元素進行對比。(以升序為例)

#include<stdio.h>

int main()

{

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

int temp, index;

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

index = i;

for (int j = i; j < 10; j++)

{

if (array[j] < array[index])

index = j;

}

if(i != index)

{

temp = array[i];

array[i] = array[index];

array[index] = temp;

}

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

printf("%2d"array[i])

return 0;

}

三、快速排序

是通過一趟排序將要排序的數據分割成獨立的兩部分,其中一部分的所有數據都比另外一部分的所有數據都要小,然後再按此方法對這兩部分數據分別進行快速排序,整個排序過程可以遞歸進行,以此達到整個數據變成有序序列。

void QuickSort(int* arr, int size)

{

int temp, i, j;

for(i = 1; i <size; i++)

for(j=i; j>0; j--)

{

if(arr[j] <arr[j-1])

{

temp = arr[j];

arr[j]=arr[j-1];

arr[j-1]=temp;

}

}

}

㈥ 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;
}

㈦ c語言怎麼做冒泡排序啊

使用冒泡排序法進行編程

解釋:

1.第一個for循環:利用數組循環輸入4個變數。

2.第二個for循環:該循環的意思是如果a[0]>a[1]的話,兩個變數的值交換,利用循環依次比較。要注意的是i<3,因為其中有i+1,i最大取到2,也就是i+1最大取到3才正確。

3.第三個for循環:利用循環依次輸出排序後的數組,每輸出一個加一個空格以便於區分。

(7)c語言冒泡排序演算法擴展閱讀:

冒泡排序法,從數組頭部開始,不斷比較相鄰的兩個元素的大小,通過交換兩個元素的值使較大的元素逐漸往後移動,直到數組的末尾。

經過第一輪的比較,就可以找到最大的元素,並將它移動到最後一個位置。第一輪結束後,繼續第二輪。仍然從數組頭部開始比較,讓較大的元素逐漸往後移動,直到數組的倒數第二個元素為止。

經過第二輪的比較,就可以找到次大的元素,並將它放到倒數第二個位置。

以此類推,進行 n-1(n 為數組長度)輪「冒泡」後,就可以將所有的元素都排列好。

熱點內容
更新時間伺服器ip移動 發布:2024-11-08 09:39:13 瀏覽:217
存儲與網路的關系 發布:2024-11-08 09:37:42 瀏覽:558
php設置文件大小 發布:2024-11-08 09:36:37 瀏覽:514
ftp文件注釋 發布:2024-11-08 09:20:06 瀏覽:169
大疆上傳視頻 發布:2024-11-08 09:19:58 瀏覽:637
cwebservice文件上傳 發布:2024-11-08 09:09:18 瀏覽:583
王牌戰爭有沒有什麼和平的伺服器 發布:2024-11-08 09:01:36 瀏覽:374
centos7刪除文件夾 發布:2024-11-08 09:00:58 瀏覽:990
伺服器可以分成多個獨立的電腦嗎 發布:2024-11-08 08:56:15 瀏覽:202
如何運行gcc編譯的文件 發布:2024-11-08 08:51:49 瀏覽:498