5.9数组选择排序
Posted Java学习零基础
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5.9数组选择排序相关的知识,希望对你有一定的参考价值。
前面5.5我们写了一次数组的排序,前面讲的是调用Arrays类的方法来进行排序,和冒泡排序。今天我们写另外的一种数组排序选择排序
都是排序谁的效率会更高呢?等会我们会用代码来解答。
选择基本原理如下:对于确定的一个数组,经过第一轮比较后得到最小的记录,然后将该记录的位置与第一个记录的位置交换;接着对不包括第一个记录以外的其他记录进行第二次比较,得到最小记录并与第二个位置记录交换;重复该过程,知道进行比较的记录只剩下一个为止。
先看使用方法:
public class Test {
public static void main(String[] args){
int[] arr={11,33,29,65,88,36,12};
System.out.println("交换之前:");
for(int num:arr){
System.out.print(num+" ");
}
System.out.println();
//选择排序的优化
for(int i = 0; i < arr.length - 1; i++) {// 做第i趟排序
for(int j = i + 1; j < arr.length; j++){// 选最小的记录
if(arr[j] < arr[i]){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
System.out.println("交换之后:");
for(int num:arr){
System.out.print(num+" ");
}
}
}
现在我们比较一下哪个代码效率更高。
首先是选择排序:
public class Test {
public static void main(String[] args){
int[] arr={11,33,29,65,88,36,12};
int a=0;
int b=0;
for(int i = 0; i < arr.length - 1; i++) {// 做第i趟排序
for(int j = i + 1; j < arr.length; j++){// 选最小的记录
if(arr[j] < arr[i]){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
a++;
}
b++;
}
}
System.out.println("交换"+a+"次");
System.out.println("比较"+b+"次");
for(int num:arr){
System.out.print(num+" ");
}
}
}
现在是冒泡排序:
public static void main(String[] args){
int[] arr={11,33,29,65,88,36,12};
int a=0;
int b=0;
for(int i = 0; i < arr.length - 1; i++) {
for(int j = 0; j < arr.length-1; j++){
if(arr[j] > arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
a++;
}
b++;
}
}
System.out.println("交换"+a+"次");
System.out.println("比较"+b+"次");
for(int num:arr){
System.out.print(num+" ");
}
}
}
结果来了:
显而易见选择排序效率更高 如果是数组比较长,对比更明显。
以上是关于5.9数组选择排序的主要内容,如果未能解决你的问题,请参考以下文章