很多地方都用到了排序,这里将两个比较常用的方法记录下
冒泡排序法:
原理:比较两个相邻的元素,将值大的元素交换至右端。直接上代码了
public class MaoPDemo02 {
public static void main(String[] args) {
/*
* 冒泡排序法的应用
* 比较两个相邻的元素,将值大的元素交换至右端。(升序)
*/
int [] num = {9,10,4,5,7,8,6};
System.out.println("排序前");
for(int n : num) {
System.out.print(n+",");
}
for(int i =0;i<num.length-1;i++) {//外层循环决定比较的回合数
for(int j =0;j<num.length-1-i;j++) {//内存循环决定每一回合的比较次数
if(num[j]>num[j+1]) {
int min=0;
min=num[j+1];
num[j+1]=num[j];
num[j]=min;
}
}
}
System.out.println();
System.out.println("冒泡排序后");
for(int n : num) {
System.out.print(n+",");
}
}
}
选择排序法
每一回从要排序的结果中选出最小/大的元素,顺序放在已排好序的序列最后/前,直到全部记录排序完成,
public class SelectedDemo {
public static void main(String[] args) {
/*
* 选择排序法的应用(升序)
*
*/
int [] num = {9,10,4,5,7,8,6};
System.out.println("排序前");
for(int n : num) {
System.out.print(n+",");
}
for(int i =0;i<num.length-1;i++) {
int min =i;//在数组下标为i的位置找一个默认最小的,准备放到数组最左边
for(int j =min+1;j<num.length;j++) {
if(num[j]<num[min]) {
min=j;//右边比左边小 记录下标
}
if(i!=j) {//通过记录的下标进行下标元素互换(满足内层条件)
int nul =num[i];
num[i]=num[min];
num[min]=nul;
}
}
}
System.out.println();
System.out.println("顺序排序后");
for(int n : num) {
System.out.print(n+",");
}
}
}