今天在数组中用到了排序算法,经过查找资料之后,在这总结三种常见的排序算法。
/** * 冒泡排序法 */ public void fun1(){ int[] array= {10,3,9,4,8,66,88,319}; //N个数要比较的轮数为N-1 for (int i = 0; i < array.length-1; i++) { //每一轮比较的次数为N-1-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; } } } for (int i = 0; i < array.length; i++) { System.out.print(array[i]+" "); } } /** * 选择排序法 */ public void fun2(){ int [] array = {1,9,3,13,4,5,7,19}; int min = 0; //保存最小元素的下标 for (int i = 0; i < array.length; i++) { min=i; //查找最小数在数组中的下标 for(int j =i+1;j<array.length;j++){ if (array[min]>array[j]) { min=j; //保存最小数的下标 } } //如果第i个最小数的位置不在i上,则进行位置交换 if (i!=min) { int temp = array[i]; array[i]=array[min]; array[min]=temp; } } for (int i = 0; i < array.length; i++) { System.out.print(array[i]+" "); } } /** * 插入排序法 */ public void fun3(){ int[] array = {1,12,4,6,7,3}; for (int i = 1; i < array.length; i++) { int temp = array[i]; //把下标保存起来 int j=i; while(j>0&&temp<array[j-1]){ //倒序排列的话小于号改成大于 array[j]=array[j-1]; j--; } array[j]=temp; } for (int i = 0; i < array.length; i++) { System.out.print(array[i]+" "); } }