文章目錄
- 前言
- 一、冒泡排序分類
- 二、冒泡排序的動態圖
- 三、冒泡排序的時間復雜度
- 1.冒泡排序代碼
- 總結
前言
筆者是一名計算機專業大一新生,想在假期通過寫博客來記錄自己的學習經歷,目前正在學習十大排序,想今天寫一寫與冒泡排序有關的知識點,筆者才疏學淺,望各位多多指正,希望與各位一同在學習的道路上前進,
一、冒泡排序分類
冒泡排序屬于比較類排序中的交換排序
二、冒泡排序的動態圖
注:此圖片是筆者在“博客園” 一像素博主發布的十大排序動態圖中看到的,應該算是非盈利性轉載吧,宣告了應該就不算抄襲了吧?[我實在是小白,不太清楚],
三、冒泡排序的時間復雜度
根據上面的動態圖,我們可以知道冒泡排序最壞的情況是計算(N*(N-1))/2次
解釋: 對于有n個資料的序列,共需n-1趟排序,第i趟對從1到n-i個資料進行比較、交換,冒泡排序的最壞情況是待排序序列逆序,第1趟比較n-1次,第2趟比較n-2次,依此類推,最后一趟比較1次,一共進行n-1趟排序,因此,冒泡排序在最壞情況下的比較次數是(n-1)+(n-2)+…+1,結果為n(n-1)/2
1.冒泡排序代碼
代碼如下(這里筆者假設已知數字個數為10):
#include<iostream>
#include<cstdio>
#define N 10
using namespace std;
int main()
{
int a[N]; //十個數排序
int count, i, temp = 0, num;
for(count = 0; count < N; count++ )
cin >> a[count]; //輸入10個數
for(count = 0; count < N; count++) //運行10次
{
for(i = 0; i < N - 1; i++)
{
if(a[i] > a[i+1]) //如果前面的數大于后面的數
{
temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
} //交換兩個數字
}
}
for(count = 0; count < N; count++)
cout << a[count] << " ";
}
總結
以上就是今天要講的內容,本文僅僅簡單介紹了冒泡排序的使用,冒泡排序作為比較簡單的一種排序,可以幫助我們得到我們想要的排好序的錯亂序列,
如果這篇博客能夠幫助大家理解冒泡排序,希望大家點個贊,
該博客也是我自己的大學生涯學習記錄,
希望和大家一起進步,再見!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/259132.html
標籤:其他
