經典排序之選擇排序(Java)
基本介紹
選擇式排序也屬於內部排序法,是從欲排序的資料中,按直接的規則選出某一個元素,再依規定交換位置後達到排序的目的。
選擇排序思想
選擇排序(select sorting)也是一種簡單的排序方法。它的基本思想是: 第一次從arr[0]~arr[n-1]中選取最小值,與arr[0]交換,第二次從arr[1] ~arr[n-1]中選取最小值,與arr[1]交換, 第三次從arr[2] ~arr[n-1]中選取最小值,與arr[2] 交換,…
第i次從arr[i-1] ~ arr[n-1]中選取最小值,與arr[i-1]交換,…,第n-1次從arr[n-2] ~arr[n-1]中選取最小值,與arr[n-2]交換,總共通過n-1次,得到一個從小到大的有序序列。
選擇排序思路分析圖:
在這裡插入圖片描述
選擇排序的思路:
- 選擇排序一共有陣列大小-1輪排序
- 每一輪排序,又是一個迴圈,迴圈的規則(程式碼)
- 先假定當前這個數是最小數
- 然後和後面的每個數進行比較,如果發現有比當前數更小的數,就重新確定最小數,並得到下標
- 當遍歷到陣列的最後時,就得到本輪最小數和下標
- 交換當前數和最小數的位置。
程式碼實現如下:
public class paixu {
public static void main(String[] args) {
//1.定義一個陣列 對它進行排序
int[] arr = {5,6,9,4,3,8,1,7,11,18,2,5};
System.out.println("排序前的陣列為");
System.out.println(Arrays.toString(arr));
//2.定義一個輔助變數 用來進行比較
int temp = 0;
int temp1 = 0;
int index = 0;// 最小值的下標
boolean flag = false;
//3.選擇排序的思路:
//3.1 外層迴圈為陣列的長度-1 首先使temp = arr[0] 預設為最小值
//3.2 內層迴圈為陣列的長度-1 用temp變數一個個和陣列中值進行比較,第一次迴圈找出最小值和最小值的下標
//3.3 內層迴圈結束 將arr[0]和最小值的位置進行更換 這樣最小值就到了第一個位置
//3.4 第二次外層迴圈 將temp = arr[1] 內層迴圈從陣列的第二個值開始進行比較,因為第一次外層迴圈已經找出了最小值 沒必要在進行比較
for (int i = 0; i < arr.length-1; i++) {
temp = arr[i];
for (int j = i+1; j < arr.length; j++) { //每次內層迴圈從第i個值開始比較
if(temp>arr[j]){
temp = arr[j];
index = j;
flag = true;
}
}
//內層迴圈結束 index就是陣列中最小值的下標
//更換位置
if(flag){
temp1 = arr[i];
arr[i] = arr[index];
arr[index] = temp1;
System.out.println(Arrays.toString(arr));
flag = false;
}
}
//外層迴圈結束 陣列已經排序完畢
System.out.println("排序後的陣列為");
System.out.println(Arrays.toString(arr));
}
}
相關文章
- Java 選擇排序Java排序
- PHP 排序演算法之選擇排序PHP排序演算法
- Python排序演算法之 選擇排序Python排序演算法
- 排序演算法之「選擇排序(SelectionSort) 」排序演算法
- 排序演算法入門之「選擇排序」排序演算法
- 選擇排序和快速排序排序
- 選擇排序排序
- java選擇排序演算法Java排序演算法
- 經常提及的幾個js排序方法(氣泡排序、選擇排序、計數排序)JS排序
- 經典演算法(19)教你兩分鐘學會【選擇排序】演算法排序
- 排序演算法:選擇排序排序演算法
- 排序演算法__選擇排序排序演算法
- 選擇排序和氣泡排序排序
- 氣泡排序與選擇排序排序
- 桶排序 選擇,插入排序排序
- 十大經典排序演算法之氣泡排序排序演算法
- 演算法學習之選擇排序和堆排序:演算法排序
- js選擇排序JS排序
- 01選擇排序排序
- 選擇排序法排序
- 排序——選擇排序小練習(二)排序
- 排序——選擇排序小練習(一)排序
- 排序演算法 - 氣泡排序和選擇排序排序演算法
- 排序演算法(氣泡排序,選擇排序,插入排序,希爾排序)排序演算法
- Java實現二元選擇排序Java排序
- php實現 氣泡排序,插入排序,選擇排序PHP排序
- 圖解選擇排序與插入排序圖解排序
- 氣泡排序和選擇排序流程圖排序流程圖
- 排序演算法入門:選擇排序排序演算法
- 氣泡排序和選擇排序詳解排序
- 畫江湖之演算法篇【排序演算法】選擇排序演算法排序
- 畫江湖之演算法篇 [排序演算法] 選擇排序演算法排序
- 高效理解排序之——選擇排序-含JAVA程式碼(簡潔明瞭,非無腦COPY)排序Java
- 陣列選擇排序陣列排序
- C# 選擇排序C#排序
- 簡單選擇排序排序
- PHP 常見4種排序 氣泡排序、選擇排序、插入排序、快速排序PHP排序
- Java排序之計數排序Java排序