排序法之選擇排序法

2021-07-31 09:52:01 字數 1172 閱讀 8200

首先通過陣列中元素的比較方式來分析:

用陣列中第乙個角標的元素與陣列中第二個角標的元素進行比較,發現9比6大,進行位置置換,此處應該定義乙個三方變數,用來記錄住置換過程的元素值,然後再用第乙個角標的元素與下乙個角標元素進行比較,按照全面的原則進行置換位置,如果前者小於後者,則不置換位置,一次比較,當第一輪結束之後第乙個角標出能取的該陣列中最小的元素的值,然後再用第乙個角標的元素開始和下乙個角標的元素進行比較,同理,當第二輪結束後,第二個角標處獲取了該陣列中的第二小的值。所以我們發現當依次這樣比較下去,就可以對陣列中的元素進行排序,當比較到arr.length-1元素時,發現只剩下這乙個元素,沒有其他元素和它進行比較了。

思路:

1、首先定義乙個功能函式對陣列進行排序,

2、明確結果,沒有返回值,因為它只是對陣列進行排序的乙個動作,明確是否有未知內容參與運算,有,陣列型別int arr

實現**:

public

static

void

selectsort(int arr)}}

}

優化後的選擇排序:

從上面的排序圖中我們可以知道,對陣列中元素進行置換位置的次數過多,也就是對堆記憶體的操作頻繁,降低了效能,下面我們可以通過這種方式對效能優化。

思路:

在棧記憶體中我們定義兩個變數,分別用來記錄較小的元素的值和較小元素的角標,然後對其進行初始化,至於初始化的值只要是陣列中的任意元素即可,然後拿陣列中的元素與它進行比較,如果發現拿去比較的元素比變數中記錄的數值要小,那麼就進行位置置換,並記錄下較小的元素的角標,依次把陣列中的元素遍歷完,就可以獲取陣列中的最小元素的值和角標,然後我們拿初始化的值和獲取的最小的元素進行位置的置換,這樣以來當我們獲取了陣列中的元素的最小的時候,堆記憶體中的只用操作一次位置即可,這樣的就提高效能。

實現**:

public

static

void selectsort_2(int arr)

}if(index!=x)}}

氣泡排序法 選擇排序法

相鄰兩個數進行比較 如果前者比後者大 就把前者和後者互換 比如十個數 經過九次比較 就可以得到乙個最大的數字於排列的最末端 再經過八次比較 可以得到乙個第二大的數 依次類推 即最大的數一次一次冒泡上來。include int main printf n 資料排序 for i 0 i 9 i 列印資料...

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

一貫作風,不說廢話,走起 test public void test1 輸出每一步的排序結果 system.out.print 第 i 次的排序結果為 for int num arr system.out.println 換行 選擇排序 param arr 需排序的陣列 public void se...

選擇排序法

1.直接選擇排序法 基本思想 每一趟 第i趟,i 0,1,2,n 1 在後面n i個待排序記錄中選出關鍵字最小的記錄,作為有序記錄序列的第i個記錄。直到第n 2趟完,待排記錄只剩下乙個,不完再選了!直接選擇排序法 void selectionsort int parry,int ilen if k ...