選擇排序之直接選擇排序Java實作
<pre name="code" class="java">package com.mike.sort;
import java.util.Arrays;
public class SelectSort {
/*
* 直接選擇排序
*/
public static void selectSort(DataWrap[] data){
int length=data.length;
for (int i = 0; i < data.length-1; i++) {
int minIndex=i;
for (int j = i+1; j < data.length; j++) {
if (data[minIndex].compareTo(data[j])>0) {
minIndex=j;
}
}
if (minIndex!=i) {
DataWrap temp=data[minIndex];
data[minIndex]=data[i];
data[i]=temp;
}
}
}
/*
* 交換數組元素
*/
public static void swap(DataWrap[] data,int i,int j){
DataWrap temp=data[i];
data[i]=data[j];
data[j]=temp;
}
public static void main(String[] args) {
DataWrap[] dataWraps={
new DataWrap(21,""),
new DataWrap(31,""),
new DataWrap(2,""),
new DataWrap(2338,"*"),
new DataWrap(2122,""),
new DataWrap(22,""),
new DataWrap(55,""),
new DataWrap(134,""),
new DataWrap(24000,"")
};
System.out.println("排序之前:"+Arrays.toString(dataWraps));
selectSort(dataWraps);
System.out.println("排序之後:"+Arrays.toString(dataWraps));
}
}
/*
*定義一個資料包裝類
*/
class DataWrap implements Comparable<DataWrap>{
int data;
String flag;
public DataWrap() {
// TODO Auto-generated constructor stub
}
public DataWrap(int data,String flag) {
this.data=data;
this.flag=flag;
}
@Override
public String toString(){
return data+flag;
}
@Override
public int compareTo(DataWrap o) {
// TODO Auto-generated method stub
return this.data>o.data?1:(this.data==o.data?0:-1);
}
}