您的位置:首页 > 职场人生

java面试题8--数组高级-选择排序

2016-08-06 16:30 246 查看
数组排序之选择排序:

* 选择排序基本思路:

从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处



package sort;

public class SelectSort {

public static void selectSort(int [] arr){
//      外循环控制从数组第一个元素开始遍历,直到length-1(倒数第2)个元素
for(int x=0; x<arr.length-1; x++){
System.out.print("当前正在为第"+(x+1)+"个元素(从1开始)寻找最小值,");
//          内循环控制从x开始,把后面的最小的拉到arr[x]处来
for(int y=x+1;y<arr.length;y++){
if(arr[x]>arr[y]){
System.out.println("找到比"+arr[x]+"小的值"+arr[y]+",交换");
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
}
System.out.println("第"+(x+1)+"个元素归位后的结果:");
printArray(arr);
}
}

public static void printArray(int [] arr){
System.out.print("[");
for(int x=0;x<arr.length;x++){
if(x==arr.length-1){
System.out.print(arr[x]+"]");
System.out.println();
}else{
System.out.print(arr[x]+", ");
}
}
}
/**
* @param args
*/
public static void main(String[] args) {
int [] a = new int[]{10 ,9, 8, 7, 6, 5, 4, 3, 2, 1};
System.out.print("开始比较");
printArray(a);

selectSort(a);
System.out.print("结束比较");
printArray(a);
}

}


运行结果:

开始比较[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
当前正在为第1个元素(从1开始)寻找最小值,找到比10小的值9,交换
找到比9小的值8,交换
找到比8小的值7,交换
找到比7小的值6,交换
找到比6小的值5,交换
找到比5小的值4,交换
找到比4小的值3,交换
找到比3小的值2,交换
找到比2小的值1,交换
第1个元素归位后的结果:
[1, 10, 9, 8, 7, 6, 5, 4, 3, 2]
当前正在为第2个元素(从1开始)寻找最小值,找到比10小的值9,交换
找到比9小的值8,交换
找到比8小的值7,交换
找到比7小的值6,交换
找到比6小的值5,交换
找到比5小的值4,交换
找到比4小的值3,交换
找到比3小的值2,交换
第2个元素归位后的结果:
[1, 2, 10, 9, 8, 7, 6, 5, 4, 3]
当前正在为第3个元素(从1开始)寻找最小值,找到比10小的值9,交换
找到比9小的值8,交换
找到比8小的值7,交换
找到比7小的值6,交换
找到比6小的值5,交换
找到比5小的值4,交换
找到比4小的值3,交换
第3个元素归位后的结果:
[1, 2, 3, 10, 9, 8, 7, 6, 5, 4]
当前正在为第4个元素(从1开始)寻找最小值,找到比10小的值9,交换
找到比9小的值8,交换
找到比8小的值7,交换
找到比7小的值6,交换
找到比6小的值5,交换
找到比5小的值4,交换
第4个元素归位后的结果:
[1, 2, 3, 4, 10, 9, 8, 7, 6, 5]
当前正在为第5个元素(从1开始)寻找最小值,找到比10小的值9,交换
找到比9小的值8,交换
找到比8小的值7,交换
找到比7小的值6,交换
找到比6小的值5,交换
第5个元素归位后的结果:
[1, 2, 3, 4, 5, 10, 9, 8, 7, 6]
当前正在为第6个元素(从1开始)寻找最小值,找到比10小的值9,交换
找到比9小的值8,交换
找到比8小的值7,交换
找到比7小的值6,交换
第6个元素归位后的结果:
[1, 2, 3, 4, 5, 6, 10, 9, 8, 7]
当前正在为第7个元素(从1开始)寻找最小值,找到比10小的值9,交换
找到比9小的值8,交换
找到比8小的值7,交换
第7个元素归位后的结果:
[1, 2, 3, 4, 5, 6, 7, 10, 9, 8]
当前正在为第8个元素(从1开始)寻找最小值,找到比10小的值9,交换
找到比9小的值8,交换
第8个元素归位后的结果:
[1, 2, 3, 4, 5, 6, 7, 8, 10, 9]
当前正在为第9个元素(从1开始)寻找最小值,找到比10小的值9,交换
第9个元素归位后的结果:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
结束比较[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: