选择排序
1.直接选择排序
原理:将序列划分为无序和有序区,寻找无序区中的最小值和无序区的首元素交换,有序区扩大一个,循环最终完成全部排序。
/* 选择排序*/
public static void select(){
int[] b={26,37,8,59,10,61,32,13,54,15};
print(b);
System.out.println();
int i;int j;
for(i=0;i<b.length-1;i++){
int min=i+1;
int temp;
//找到从 i~length中最小值得位置
for(j=i+1;j<b.length;j++){
if(b[j]<b[min]){
min=j;
}
}
System.out.println("最小值:"+b[min]);
//最小值和第一个位置的数 交换
temp=b[min];
b[min]=b[i];
b[i]=temp;
}
print(b);
}
【结果:】
26 37 8 59 10 61 32 13 54 15
最小值:8
最小值:10
最小值:13
最小值:15
最小值:26
最小值:32
最小值:37
最小值:54
最小值:59
8 10 13 15 26 32 37 54 59 61
2.堆排序
原理:利用大根堆或小根堆思想,首先建立堆,然后将堆首与堆尾交换,堆尾之后为有序区。
要点:建堆、交换、调整堆