遍历当前索引后的所有元素,每次把比当前元素大的元素和当前元素相交换
大学四年,能完整的写下来的就剩这4个排序了。
public SelectSort(){
private int[] paraL;
public void show(){
System.out.println("排序后的记录为:");
for(int para:paraL){
System.out.print(para+" ");
}
System.out.println();
}
public void sSort(){
for(int i = 0 ; i < paraL.length ; i++){
paraL[i] = select(i);//将i之后的最小值赋值给paraL[i]
}
}
private int select(int i){/*获得i之后最小的数值*/
int vlaue = paraL[i];//记录最小值
int min = i;//记录最小值下标
int j = i;
int minValue = paraL[min];
for(i++; i < paraL.length ; i++){
if(paraL[i] < paraL[min]){
min = i;
}
}
if(min != j){/*i之后当存在比paraL[i]小的*/
minValue = paraL[min];
paraL[min] = paraL[j];
}
return minValue;
}
public static void main(String[] args){
int[] paraL = {9,8,7,6,5,4,3,2,1};
SelectSort ss = new SelectSort();
ss.setParaL(paraL);
ss.sSort();
ss.show();
}
public int[] getParaL() {
return paraL;
}
public void setParaL(int[] paraL) {
this.paraL = paraL;
}
}
20160802再写一遍。
/**
* ClassName: SelectSort
* @Description: 选择排序(遍历当前索引后的所有元素,每次把比当前元素大的元素和当前元素相交换)
* @author Panyk
* @date 2016年8月2日
*/
public class SelectSort {
public int[] data;
public void sort(){
int max = 0;
int maxI = 0;
show();
for(int i=0; i< data.length -1; i++){
max = data[i];
maxI = i;
for(int j=i+1; j<data.length; j++){
if(data[j]>max){
maxI = j;
max = data[j];
}
}
if(maxI!=i){
data[maxI] = data[i];
data[i] = max;
}
show();
}
}
private void show(){
for(int temp:data){
System.out.print(" " + temp);
}
System.out.println();
}
public static void main(String[] args) {
SelectSort bs = new SelectSort();
int[] data = new int[]{1,3,5,2,4,4,1,2};
bs.data = data;
bs.sort();
}
}