1. 程式人生 > >簡單選擇排序SelectSort

簡單選擇排序SelectSort

lec rtm system 最小數 string ted 一個 排序 ner

package com.cc.dataconsttuct.com;

/***
* 簡單選擇排序:令A[0,n-1]有n個數據元素的數組,將數組A排列為一個非降序的有序數組;
* 算法:首先在n個元素中找到最小元素,將其放在A[0]中,然後將剩下的n-1個元素中找到最小的放在A[1]中,這個過程不斷進行下去。。。。
* @author caocx
*
*/
public class SelectSort {

public static void main(String[] args) {
// TODO Auto-generated method stub
int[] a = {12,23,9,24,15,3,18};
//排序前輸出
for (int i = 0; i < a.length; i++) {
if(i == a.length-1){
System.out.println(a[i]);
}
else{
System.out.print(a[i]+" ");
}

}
//調用方法
SelectSortMain(a);
//排序後輸出
System.out.println("選擇排序後的數據");
for (int i = 0; i < a.length; i++) {
if(i == a.length-1){
System.out.println(a[i]);
}
else{
System.out.print(a[i]+" ");
}
}
}

//函數方法
private static void SelectSortMain(int[] arr) {
int temp;
//eg:就比如n個數,前n-1個數都可以當做min 依次與後面的數進行比較
for (int j = 0; j < arr.length-1; j++) {
int min = j;
//代表第j+1個數的各個數,拿第j個數與j+1 到arr的最後一個數進行對比
//j是最小的數,依次與後面的進行比較,如果後面的數比最小數還要小 就對換位置
for (int k = j+1; k < arr.length; k++)
if(arr[k]<arr[min])
min = k;
//j不是最小的數,把最小的數值對換到j的位置
if(j!=min){
temp = arr[j];
arr[j] = arr[min];
arr[min] = temp;
}
}
}
}

簡單選擇排序SelectSort