三大排序
一:选择排序
原理:将数组中的每个元素与第一个元素比较如果这个元素小于第一个元素则交换这两个元素
循环第一条规则,找出最小的元素放于第一个位置,经过n-1轮比较完成排序
public class Jiaohuan { public static void main(String [] args){ int [] num={5,2,6,9,8,7,1,3,4}; for(int i=1;i<num.length;i++){ for(int j=0;j<i;j++){ if(num[i]<num[j]){ int temp=num[i]; num[i]=num[j]; num[j]=temp; } } } for(int i=0;i<num.length;i++){ System.out.print(num[i]+" "); } } }
二:冒泡排序
原理:逐一比较数组中相邻的两个元素,如果后面的元素小于前面的元素,就交换相互顺序
经过每一轮的比较,一定有一个最大的排在最后面的位置,每次比较剩下的元素经过n-1次比较可以实现排序
简单而言,比较交换相邻的元素,每次最大的漂移到最后
public class Maopao { public static void main(String [] args){ int [] num={5,2,6,3,1,4,7,9,8}; for(int i=0;i<num.length;i++){ for(int j=0;j<num.length-1-i;j++){ if(num[j]>num[j+1]){ int temp=num[j+1]; num[j+1]=num[j]; num[j]=temp; } } } for(int i=0;i<num.length;i++){ System.out.print(num[i]+" "); } } }
三:插入排序
原理:将数组分为两部分,将后部分的第一张逐一与前部分每一张比较,如果当前元素小,就移动被比较元素,找到合理的位置插入
public class Charu { public static void main(String[] args) { int[] arr = { 60, 70, 80, 90, 100 };// 旧数组 /* 长度加一的新数组 */ int[] newArr = new int[arr.length + 1]; /* 将旧的数组中的数据复制到新的数组中 */ for (int i = 0; i < arr.length; i++) { newArr[i] = arr[i]; } int num = 75; /* 找到要插入的数据的位置 */ int index = 0; for (int j = 0; j < newArr.length; j++) { if (num < newArr[j]) { index = j; break; } } /* 移动数组中的元素 */ for (int k = newArr.length - 1; k >= index; k--) { newArr[k] = newArr[k - 1]; } /* 将数字插入到合理的位置 */ newArr[index] = num; /*打印数组中的元素*/ System.out.print("插入数字后数组的内容:"); for(int t=0;t<newArr.length;t++){ System.out.print(newArr[t]+" "); } } }