冒泡排序法
文章目錄
- 冒泡法的基本思路
- 思路總結
- 程式實作
下面我們一起來看看排序中的冒泡排序法,
💡[例]有5個數字,要求對它們按由小到大的順序排列,
這種問題稱為數的排序(sort),排序的規律有兩種:一種是“升序”,從小到大;另一種是“降序”,從大到小,可以把這個題目抽象為一般形式“對n個數按升序排序”,
排序方法是一種重要的、基本的演算法,排序的方法很多,這道題我們用冒泡法排序,
冒泡法的基本思路
冒泡法的基本思路是:每次將相鄰兩個數比較,將小的調到前面,若有5個數: 9,8,5,2,0,第1次先將最前面的兩個數8和9對調,第2次將第2和第3個數(9和5)對調…如此共進行4次,得到8-5-2-0-9的順序,可以看到:最大的數9已“沉底”,成為最下面一個數,而小的數“上升”,最小的數0已向上“浮起”一個位置,經過第1趟(共4次比較與交換)后,已得到最大的數9,
然后進行第2趟比較,對剩下的前面4個數(8,5,2,0)進行新一輪的比較,使第二大的數“沉底”,同樣按照上面方法進行第2趟比較,經過這一趟3次比較與交換,得到次大的數8.
按此規律進行下去,可以推知,對5個數需要比較4趟,才能使5個數按從小到大排列,在第1趟中要進行兩個數之間的比較共4次,在第2趟程序中比較3次…第4趟只須比較1次,
思路總結
總結一下:如果有n個數,則要進行n-1趟比較,在第1趟比較中要進行n-1次兩兩比較,在第i趟比較中要進行n-i次兩兩比較,
具體冒泡的方式:用相鄰的兩個元素進行比較,前一個大于后一個元素時,交換著兩個資料,依次直到陣列的末尾,
程式實作
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void BubbleSort(int , int );//函式宣告
int main()
{
int array[100] ;
int i;
printf("請輸入5個數字:");
for (i = 0; i < 5; i++)
{
scanf("%d", &array[i]);
}
BubbleSort(array, 5);//呼叫函式
printf("排序后為:");
for (i = 0; i < 5; i++)
{
printf("%d ", array[i]);//排序后輸出
}
return 0;
}
//冒泡排序
void BubbleSort(int array[], int size)
{
// 外層回圈控制冒泡排序的趟數
// size-1表示:最后一趟區間中只剩余1個元素,該趟冒泡可以省略
for (int i = 0; i < size - 1; i++)
{
// 具體冒泡的方式:用相鄰的兩個元素進行比較,前一個大于后一個元素時,交換著兩個資料,依次直到陣列的末尾
for (int j = 1; j < size - i; j++)
{
if (array[j - 1] > array[j])
{
int temp = array[j - 1];
array[j - 1] = array[j];
array[j] = temp;
}
}
}
}
運行一下看看

是我們想要的效果啦!
以上就是我總結的冒泡排序法,
如有不足之處,歡迎指正,
如果對你有幫助,那就動動你的手指,給我點個贊👍吧!
主頁還有其他文章,歡迎學習指正,
關注我,讓我們一起學習一起成長吧!
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/294983.html
標籤:其他
上一篇:SDN已死
