1. 程式人生 > 其它 >8.16Java之選擇排序演算法

8.16Java之選擇排序演算法

8.16Java之選擇排序演算法

過程分析

每次都從資料中選出最大或最小的元素

步驟分析

  • 先從全部資料中選出最小的元素,放到第一個元素的位置(選出最小元素和第一位位置交換位置);

  • 然後再從除了第一個元素的剩餘元素中再選出最小的元素,然後放到陣列的第二個位置上。

  • 迴圈重複上面的步驟,最終選出來的資料都放前面了,資料就排好序了。

動圖演示

程式碼示例

package PracticeReview.Algorithm;

/**
* 選擇排序演算法演示
* @since JDK 1.8
* @date 2021/08/16
* @author Lucifer
*/
public class ChooseSort {
public static void chooseSort(int[] arr){
//遍歷陣列索引尋找最小值
for (int i=0; i<arr.length; i++){
//設定遍歷的值
int min = i;
//從i的下一位和i進行比較,如果比i大就將兩個值huanweizhi
for (int j=i+1; j<arr.length; j++){
if (arr[j]<arr[min]){
//交換二者下標
min = j;
}
}
//如果最小值的下標不等於i了,那麼將最小值與i位置的資料替換,即將最小值放到陣列前面來,然後迴圈整個操作。
if (min!=i){
//用的是氣泡排序的思想
int temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
}
//增強for迴圈讀取值
for (int num : arr){
System.out.println(num);
}
}

public static void main(String[] args) {
chooseSort(new int[]{1,3,5,2,7,4,9,8});
}
}

go實現:

package main

import "fmt"

var (
chooseArray []int
)

func main() {
chooseArray = []int{3,6,7,1,2,5}
chooseSort(chooseArray)
}

func chooseSort(arr []int) {
for i := 0; i < len(arr); i++ {
//找到最小值--->這裡的i是假設下表i為最小。實際交換的一直是陣列下標
//之所以這樣賦值是保證每次迴圈進來比較的都會從排好序的下一位開始比較
min := i
//從i的下一位開始迴圈和i進行比較
for j := i+1; j < len(arr); j++ {
if arr[j] < arr[min] {
//下標交換
min = j
}
}
//判斷如果最小值!=i了,將最小值與i位置進行資料替換,將最小值放到陣列前面來
if min != i {
//使用氣泡排序的交換值得方法
temp := arr[i]
arr[i] = arr[min]
arr[min] = temp
}
}
//打印出排序好得值
for i, j := range arr {
fmt.Println("索引", i, "得值為:", j)
}
}

It's a lonely road!!!