public class Demo5 {
public staticvoidmain(String[] args){//基本逻辑:外层循环确定一个位置//内层循环确定该位置的值(当前最小值)int[] a = new int[10];for(int i =0; i < a.length; i++){
a[i]=(int)(Math.random()*100);}
System.out.println(Arrays.toString(a));// for (int i = 0; i < a.length-1; i++) {如果前面的数都确定位置了,最后一位数就不需要比较了,所以遍历的长度为a.length-1// int tmp=a[i];//确定位置// int p=i;// for (int j = i+1; j < a.length; j++) {// if(tmp>a[j]){// tmp=a[j];// p=j;// }// }// a[p]=a[i];// a[i]=tmp;// }for(int i =0; i < a.length-1; i++){for(int j = i +1; j < a.length; j++){if(a[i]> a[j]){int tmp = a[i];
a[i]= a[j];
a[j]= tmp;}}}
System.out.println(Arrays.toString(a));}}
插入排序
public class Demo6 {
public staticvoidmain(String[] args){int[] a = new int[10];for(int i =0; i < a.length; i++){
a[i]=(int)(Math.random()*100);}
System.out.println(Arrays.toString(a));for(int i =1; i < a.length; i++){int tmp=a[i];
boolean isInsert=false;for(int j = i-1; j >=0; j--){if(a[j]>tmp){
a[j+1]=a[j];}else{
isInsert=true;
a[j+1]=tmp;break;}}if(!isInsert){
a[0]=tmp;}}
System.out.println(Arrays.toString(a));}}
冒泡排序
public class Demo1 {
public staticvoidmain(String[] args){//1、从前向后遍历//2、相邻两数比较,不满足顺序则交换int[] a =new int[10];for(int i =0; i < a.length; i++){
a[i]=(int)(Math.random()*100);}
System.out.println(Arrays.toString(a));for(int i =0; i <a.length-1; i++){//比较第几轮
boolean isChanged=false;for(int j =0; j <a.length-1-i ; j++){//每一轮比上轮少比一次if(a[j]>a[j+1]){
isChanged=true;int tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;}}
System.out.println("经过第"+(i+1)+"轮,数组变为:\n"+Arrays.toString(a));if(!isChanged){
System.out.println("不需要排序");break;}}
System.out.println(Arrays.toString(a));}}