算法小结-冒泡、选择排序、直接插入排序
1.冒泡排序法:比较相邻的两个元素,如果前边比后边大,就对调两元素,一趟下来,最大的数放在最右边,就像泡泡上升一样。
代码:
/* * 冒泡 */ static void bubble_sort(int[] array) { for (int i = 0; i < array.length; i++) { for (int j = i; j < array.length; j++) { if (array[i] > array[j]) { int temp = array[i]; array[i] = array[j]; array[j] = temp; } } } }
2.选择排序:每一趟选择最小的一个元素,放在已排好的元素的最右边,直至全部拍完。
代码:
/* * 选择排序 * 每一趟从待排序的数据元素中选出最小的,放在已排好的数列的最前。 */ public static void xuanzepaixu(){ int[] array = new int[]{63,24,15,26,3,8,33}; String end =""; int index; for(int i=1;i<array.length;i++){///6次 index = 0; for(int j=1;j<=array.length-i;j++){ if(array[j]>array[index]){ index=j; //记下最大的位置 } } end = end+" "+array[index]; int temp = array[array.length-i]; array[array.length-i] = array[index]; array[index] = temp; } System.out.println(end); for(int i=0;i<array.length;i++) System.out.println(array[i]); }
结果:
63 33 26 24 15 8
3
8
15
24
26
33
63
3.直接插入排序:数组分为已排序好的和未排序的两部分,每一趟选择未排序的数x和已经排好的数组进行比较,找到x应该放的位置p,把排序好的数组p之后的元素都向后移动,放入x。直至拍完。
代码:
/* * 直接插入 * 将n个有序数存放到数组a中,要插入的数为x,首先确定x插在数组中的位置p,数组中p之后的元素都向后移一个位置 */ public static void zhijiecharu(){ int[] array = new int[]{63,24,15,26,3,8,33}; int temp,j; for(int i=1;i<array.length;i++){ temp = array[i]; for(j=i-1;j>=0&&array[j]>temp;j--){ //循环结束时,1.j<0;2. array[j]<=temp;此时要放到j的后边 array[j+1]=array[j]; //有序数组里的数向后移动 } array[j+1] = temp; //j是要插入位置的前边的数 } for(int i=0;i<array.length;i++){ System.out.println(array[i]); } }
结果:3 8 15 24 26 33 63