20191007 選擇排序,插入排序,氣泡排序詳解

2021-09-28 02:20:53 字數 1545 閱讀 9098

選擇排序:將要排序的物件分作兩部份,乙個是已排序的,乙個是未排序的,從後端未排序部份選擇乙個最小值,並放入前端已排序部份的最後乙個。

插入排序:像是玩樸克一樣,我們將牌分作兩堆,每次從後面一堆的牌抽出最前端的牌,然後插入前面一堆牌的適當位置。

氣泡排序:顧名思義,就是排序時,最大的元素會如同氣泡一樣移至右端,其利用比較相鄰元素的方法,將大的元素交換至右端,所以大的元素會不斷的往右移動,直到適當的位置為止。

基本的氣泡排序法可以利用旗標的方式稍微減少一些比較的時間,當尋訪完陣列後都沒有發生任何的交換動作,表示排序已經完成,而無需再進行之後的迴圈比較與交換動作

選擇排序

插入排序

氣泡排序

// sort.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include #include #include #define max 10

#define swap(x,y)

void selsort(int); // 選擇排序

void insort(int); // 插入排序

void bubsort(int); // 氣泡排序

int main(void) ;

int i;

//得到乙個從2023年1月1日到現在的時間秒數,這樣每一次執行程式的時間的不同就可以保證得到不同的隨機數了。

srand(time(null));

printf("排序前:");

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

printf("\n請選擇排序方式:\n");

printf("(1)選擇排序\n(2)插入排序\n(3)氣泡排序\n:");

scanf("%d", &i);

switch(i)

return 0;

}//選擇排序

void selsort(int number)

}//插入排序

void insort(int number)

number[i+1] = tmp;

printf("第%d 次排序:", j);

for(k = 0; k < max; k++)

printf("%d ", number[k]);

printf("\n"); }}

//氣泡排序

void bubsort(int number)

} printf("第%d 次排序:", i+1);

for(k = 0; k < max; k++)

printf("%d ", number[k]);

printf("\n");

}}

Java排序演算法之氣泡排序 插入排序 選擇排序

一 前言 排序是日常中最常見的一種演算法,常見的演算法有 氣泡排序 插入排序 選擇排序 歸併排序 快速排序 計數排序 快速排序 基數排序 桶排序。那麼該怎樣分析和學習排序演算法呢?二 演算法的分析課 在上述的八種排序方法中,根據時間複雜度和是否基於比較可以為三種 排序演算法 時間複雜度 是否基於比較...

排序演算法 插入 選擇 冒泡 快排 歸併

可以找一些帖子理解下幾類排序演算法或者聽下陳越姥姥在mooc上的資料結構 選擇類排序 交換類排序 歸併排序 基數排序 拓撲排序 從待排序的n個記錄中的第二個記錄開始,依次與前面的記錄比較並尋找插入的位置,每次外迴圈結束後,將當前的數插入到合適的位置。void sort insert int a,in...

排序演算法詳解 選擇 插入 歸併和快排

特點 每次從待排序序列中選取最小值最為當前元素值 流程 已排好序的陣列為a 0,i 1 將未排序序列a i,n 中最小值賦給a i const int maxn 10000 int a maxn void selectsort int a,int n 特點 將未排序元素插入到已排序元素的合適位置上 ...