氣泡排序 選擇排序和插入排序

2021-07-22 12:52:05 字數 1441 閱讀 5406

氣泡排序:

思路:將相鄰的兩個數比較,將較小的數調到前頭;有n個數就要進行n-1趟比較,第一次比較中要進行n-1次兩兩比較,在第j趟比較中,要進行n-j次兩兩比較。

依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。重複以上過程,直至最終完成排序。

兩種方式寫:

第一種就是每次遍歷從前往後,第二種是每次從後往前

從前往後的話就是,每次確定的是最後乙個最大的數

從後往前的話就是,每次確定的是最前邊的最小的數

void bubble_sort(int a, int n)}}

void bubblesort(int array) }} 

}

選擇排序:選擇乙個值array[0]作為標桿,然後迴圈找到除這個值外最小的值(查詢小於標桿的最小值),交換這兩個值,這時最小值就被放到了array[0]上,然後再將array[1]作為標桿,從剩下未排序的值中找到最小值,並交換這兩個值。

如圖:(資料結構與演算法中的圖)

2、時間複雜度:o(n^2),不穩定演算法,與氣泡排序相比減少了陣列交換的次數

void choicesort(int * a,int n)

}//交換

a[key]=a[i];

a[i]=min;}}

直接插入排序插入排序就是每一步都將乙個待排資料按其大小插入到已經排序的資料中的適當位置,直到全部插入完畢。

插入排序的工作方式像玩撲克牌時順序放牌一樣。開始時,左手為空並且桌子上的牌面向下。然後,每次從桌上拿一張牌並將它插入左手中正確的位置。為了找到正確的位置,我們從右到左將它與已在手中的每張牌比較,原來的牌是排好序的,如果比剛拿出的牌大,則將其再向右移乙個位置,直到找到乙個比剛拿出來的牌更小的,此時將這張牌放到該位置。

演算法適用於少量資料的排序,時間複雜度為o(n^2)。是穩定的排序方法,即兩個相等的元素在排序後能保持原來的順序。

氣泡排序和插入排序,選擇排序

插入排序原理 對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。插入排序核心 假設第乙個元素排好,之後的元素對排好的部分從後向前比較並逐一移動。選擇排序 按第乙個元素為基礎,遍歷所有元素,找出最小值,然後調換 公升序 include includevoid embed int a,in...

氣泡排序 選擇排序和插入排序

一 氣泡排序 依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。重複以上過程,直至最終完成排序。氣泡排序是穩定的。演算法時間複雜度是o n 2 二...

氣泡排序,選擇排序和插入排序

這兩天的 演算法 進入排序的學習後,遇到了一些問題,下面是我自己總結的理解 氣泡排序 兩兩相比較遍歷陣列不斷以兩兩交換的方式找到最值 最大或最小 再從迴圈中剔除該最值縮小遍歷範圍繼續一次從頭至尾的遍歷,迴圈很多次至最終排序完成。選擇排序 以乙個變數儲存下表索引,同氣泡排序一樣的兩兩相比較,但不交換,...