資料結構七 氣泡排序改進和插入排序

2021-10-23 13:39:40 字數 773 閱讀 8673

1.氣泡排序由於最後倒數第乙個元素沒有必要再往後比較了,所以第乙個迴圈i是進行到了

length-1,第二個迴圈當中,假設是從小到大排序,那麼第一趟排序,就一定會把最大的元素放到最右邊,第二趟排序會把第二大的元素放到倒數第二個位置,那麼第二趟排序就無需再與最右邊的元素進行比較,而第三趟排序就無需再與最右邊的兩個元素進行比較,所以第二個迴圈j是迴圈到length-1-i

2.優化:當氣泡排序中有一趟沒有發生任何交換,那麼就說明已經排序好了可以提前終止排序:

public

static

void

bubblesort

(int

arr)

}"第" + (i + 1) + "趟排序後的陣列");

arrays.tostring(arr));if(

!flag)

else

}}

插入排序:

從左邊第二個元素一直向右迴圈到最後乙個元素,每個元素依次不斷向前進行比較,假如是從小到大排序,那麼前面的元素比當前元素比大,就讓其右移。這裡設定乙個index作為前移索引的變數,如果最後其不等於i-1,就說明當前元素需要向前進行移動,如果等於,則說明前面所有元素都比當前元素小,就不用移動

public

static

void

insertsort

(int

arr)

if(index!=i-1)

}}

資料結構之簡單演算法(氣泡排序 選擇排序 插入排序)

簡單的js資料 實現氣泡排序 1.定義乙個簡單的無序陣列 var num 12,13,10,31,11,19 2.反向迴圈,每次剔除最右邊的數,因此次數越來越少 for var j num.length 1 j 0 j 選擇排序是對氣泡排序的改進,比氣泡排序的效率高一點,但與其他演算法比較效率較低 ...

資料結構之基礎排序(選擇排序 插入排序 氣泡排序)

排序在 中用的非常普遍,所以今天我們來學下最基礎的三種排序,如果你已經爛熟於心,請跳過本文。注 我的 一般沒有注釋,我覺得沒啥必要,都是基礎挺簡單的。include include void print int array,int len printf n void swap int array,i...

資料結構與演算法170 排序 冒泡 插入

如何分析乙個排序演算法?氣泡排序的實現與分析 插入排序的實現與分析 前兩個都很容易理解,最後簡單說下穩定性 假如有一串數字 1,3,5,7,9,5,2 排序後 1,2,3,5,5,7,9 如果5這個數字排序後和排序前前後順序一樣就是穩定的,反之不是穩定的。那麼穩定性有什麼好處呢?比如乙個雙十一的訂單...