数组的各种排序(待学习)
1.选择排序
思想:让数组中的每一个数,依次与后面的数进行比较,如果前面的数大于后面的数,就进行位置的交换(第一个数依次与
后面的数比较,第一次比较完之后最小的数在最前面 。)
图例:
package testCSDN;
import java.util.Arrays;
public class XuanZhePaiXu {
public static void main(String[] args) {
//定义一个随机数组
int [] array={1,3,2,7,6,5,4,9,10,8,7,3};
//i可以理解为比较的两个数中前面那个,i不能为最后一个,因为直接
for(int i =0;i<array.length-1;i++){
//j可以理解为比较的两个数中后面那个
for(int j=i+1;j<array.length;j++){
//用一个参数接收i,因为后面需要将两者的值交换
int temp;
if(array[i]>array[j]){
temp=array[i];
array[i]=array[j];
array[j]=temp;
}
}
}
//打印
System.out.println(Arrays.toString(array));
//结果如下
//[1, 2, 3, 3, 4, 5, 6, 7, 7, 8, 9, 10]
}
}
2.冒泡排序
思想:个人觉得跟选择排序比较相似,不同的是:它是相邻的两个数依次比较
package testCSDN;
import java.util.Arrays;
public class XuanZhePaiXu {
public static void main(String[] args) {
//定义一个随机数组
int [] array={1,3,2,7,6,5,4,9,10,8,7,3};
for(int i =0;i<array.length-1;i++){
//当第一次循环完成,最后一个数一定是最大的,下一次循环不在考虑,故需要-i
for(int j=0;j<array.length-1-i;j++){
if(array[j]<array[j+1]){
int temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
//打印
System.out.println(Arrays.toString(array));
//结果如下
//[1, 2, 3, 3, 4, 5, 6, 7, 7, 8, 9, 10]
}
}
本人写这些都只为学习和分享,可能部分内容都来自网上,或者有问题,望见谅!