資料結構與演算法學習筆記6 排序演算法1

2021-09-26 00:00:43 字數 1607 閱讀 4196

氣泡排序的基本思想是:遍歷需要排序的陣列,依次比較相鄰元素,把相對較大的放到後面,這樣大的數就會像冒泡一樣排在後方。

public

static

void

bubblesorting

(int

arr)}if

(flag==

false

)else

}}

注意:內層迴圈的退出條件是外層迴圈減去i i就是已經排好的資料個數,每遍歷一遍,就會把最大的數放到最後,即已經排好了。關於優化就是當遍歷一遍發現沒進行任何交換,就直接退出迴圈就可以了。

插入排序把當前要排序的陣列看成兩個部分,一部分是已經排序的,一部分是未排序的。最開始把第乙個元素視為有序表,然後從後面的數中依次找到合適位置插入原來的表即可。

public

static

void

insertsorting

(int

arr)

//當退出迴圈時 需要插入的位置找到 就在insertindex + 1 處

arr[insertindex+1]

= insertval;

}}

中間的while迴圈不好理解 這個迴圈的目標是找到當前數插入的索引index,如果當前的數小於有序表中元素,索引就減一,然後繼續比,直到找到當前元素比那個元素小的位置,然後插入進去。

選擇排序的思路是遍歷整個資料,第一輪從索引為0到n-1的資料找最小值,和0索引交換,第二次從1到n-1找最小值和1交換。。。。共n-1輪迴圈

}//把最小值和arr[0]交換

if(minindex!=i)

system.out.

println

("第"

+(i+1)

+"輪後:");

system.out.

println

(arrays.

tostring

(arr));

}}希爾排序是一種「巨集觀調控」的排序策略,先把資料進行分組,這樣能避免插入排序中較小數在最後導致排序效率低的問題。

("希爾排序第"+(

++count)

+"輪:");

system.out.

println

(arrays.

tostring

(arr));

}}

資料結構筆記(6)排序

基於比較的排序 前提 選擇排序 演算法 資料移動是最少的 每次交換都會改變兩個陣列元素的值,選擇排序用了n次交換。交換次數和陣列的大小是線性關係。實現 void choosesort int a,int n 交換元素 int tmp a j a j a min a min tmp 更新最小元的資訊,...

資料結構與演算法之路 6(排序)

一 排序方法與複雜度歸類 1 幾種最經典 最常用的排序方法 氣泡排序 插入排序 選擇排序 快速排序 歸併排序 計數排序 基數排序 桶排序。2 複雜度歸類 氣泡排序 插入排序 選擇排序 o n 2 快速排序 歸併排序 o nlogn 計數排序 基數排序 桶排序 o n 二 如何分析乙個 排序演算法 1...

演算法學習筆記 1 排序演算法

在本文中將列出幾種常用的排序演算法原始碼。選擇排序演算法 選擇排序 注意陣列第乙個數下標是0 不提供輸出 void selectsort int a,int n 該寫法表示按著從大到小排序,a如果需要進行結構體排序那麼 struct node nd 10 cmp node a,node b 意思是在...