C語言實現選擇 插入 氣泡排序的思想及原始碼

2021-09-11 04:12:37 字數 1233 閱讀 1746

在資料結構的書中肯定有一章的內容是實現排序,不同的排序方法適用的場景不同,時間複雜度也不同,在本篇部落格中寫到了三種最基本的排序,另外,希爾排序,快速排序分別是插入和氣泡排序的衍生,故熟悉基本的排序思想變得尤為重要,在此附上三種基本排序的原始碼

#include#include#include//定義交換函式

void my_swap(int *a,int x,int y)

//定義列印函式

void my_print(int *a,int len)

a[k]=temp;

}}void bubblesort(int *a,int len)}}

}void main()

; int len= sizeof(array)/sizeof(array[0]);

selecsort(array,len);//選擇法排序

my_print(array,len);

insertsort(array,len);

my_print(array,len);

bubblesort(array,len);

my_print(array,len);

printf("\n");

printf("hello\n");

}

首先是選擇排序,選擇排序在第一次外迴圈結束時找出乙個此次迴圈的最小值下標,通過交換函式將其交換到合適的位置。比如,在i=0時,找出i=1開始至最後乙個元素,並儲存value值最小的下標記為k,在內迴圈結束時將下標為k的value交換到下標為0的位置處。同理,i=1時,通過內迴圈將此次內迴圈裡最小值(此值實際上為次小值,最小值已經被正確排序到下標為0處)。

下面介紹插入排序,插入排序時效率較高的一種基本排序方法,並且希爾排序僅僅是在其上略加改動。插入排序可以分為兩步,1:將待排序的元素取出。2:將滿足條件的元素後移。由於第乙個元素,即下標為0的元素無需插入,故整個插入演算法從下標為1的元素開始,若其小於其之前的元素,則將其取出(定義臨時變數儲存之),同時,將所有滿足條件(大於它或者小於它)的值後移。最後將臨時變數插入到待插入的位置即可。

接下來是最為熟悉的氣泡排序,相信剛拿到排序的要求的程式設計師第一反應就是寫出氣泡排序法,在這裡要提的是關於冒泡法的優化,即設立乙個flag標記。 在此段程式中我初始化了乙個flag,在每次排序之前,假設此陣列已是有序,故將flag賦值為0,但若是在此次排序中發生了交換,即陣列並不有序,則重新將flag賦值為1,讓其進行下一次排序。這樣可以避免在陣列已經有序的情況之下進行無用的排序操做。

冒泡 插入 選擇排序及其C語言實現詳解

目錄 如何分析乙個 排序演算法 1 排序演算法的執行效率 2 排序演算法的記憶體消耗 3 排序演算法的穩定性 陣列排序資料結構 一 氣泡排序 二 插入排序 三 選擇排序 對於排序演算法執行效率的分析,一般會從這幾個方面來衡量 1.最好情況 最壞情況 平均情況時間複雜度 2.時間複雜度的係數 常數 低...

c語言實現選擇排序與氣泡排序

冒泡 這個名字的由來是因為越大的元素會經由交換慢慢 浮 到數列的頂端,故名。這裡以從小到大排序為例進行講解。基本思想及舉例說明氣泡排序的基本思想就是不斷比較相鄰的兩個數,讓較大的元素不斷地往後移。經過一輪比較,就選出最大的數 經過第2輪比較,就選出次大的數,以此類推。下面以對 3 2 4 1 進行氣...

氣泡排序和選擇排序c語言實現

說明 執行程式先輸入乙個數,為陣列的長度,會隨機生成乙個陣列,然後分貝用選擇排序和氣泡排序實現從小到大的排序.實驗結果 選擇排序演算法,從小到大 int temp 0 for int i 0 i n i 氣泡排序演算法,從小到大 for int i 0 i n i for int i 0 i n i...