Java演算法——選擇排序
阿新 • • 發佈:2018-12-31
選擇排序
前言
選擇排序的演算法太過複雜,因為每一次都要完全遍歷整個陣列確定了最值才能進行下一次的迴圈,是一種不穩定的排序,時間複雜度是n²,相對來說適用於數量較小的排序中,而不太適用於大量的資料進行排序。
選擇排序描述
選擇排序,就是每次遍歷挑選出來最值和前面的值依次進行交換達到排序的效果。
假設陣列元素有n個,第一次排序就是從arr[0]→arr[n-1]進行遍歷,第二次就是從arr[1]→arr[n-1]進行遍歷,第三次就是從arr[2]→arr[n-1]進行遍歷…
總之,每一次都要完全遍歷,所以十分麻煩,但是理解起來相對容易。
程式碼圖解
程式碼
package Algorithm;
import java.util.Scanner;
//每次都選出最小的拿出來組成陣列排序
public class Choose_Sort {
public static void main(String[] args) {
int n = new Scanner(System.in).nextInt();
int []arr = new int[n];
System.out.println("給陣列依次賦值吧");
for(int i=0;i<n;i++) {
arr[ i] = new Scanner(System.in).nextInt();
}
int p=0;
for (int i=0;i<arr.length-1;i++){
int min = arr[i];//擬定偽最小值
int j = i;//最小下標
for(int oo=i+1;oo<arr.length;oo++){
if (arr[oo]<min) {
min = arr[oo];
j = oo;
}
}
p=arr[i];
arr[i]=arr[j];
arr[j]=p;
}
for (int ii=0;ii<arr.length;ii++){
System.out.println(arr[ii]);
}
}
}