冒泡排序:通过两两比较,每次选出最大的数,沉入数组的最后端;
附代码,因是找Java工作,此处是Java的实现;
/** *冒泡排序 * @param array 排序前数组 * @return 排序后数组 */ public static int[] bubbleSort(int[] array) { for (int i = 0; i < array.length; i++) { for (int j = i + 1; j < array.length - i; j++) { if (array[j - 1] > array[j]) { int temp = array[j - 1]; array[j - 1] = array[j]; array[j] = temp; } } } return array; }
选择排序:从数组中每次找到最小的数位置,更新标记位置,将标记位置的数与外循环的数交换,每次都会将
一个最小的数放在位置上;
/** * 选择排序 * @param array 排序前数组 * @return 排序后数组 */ public static int[] selectSort(int[] array) { for (int i = 0; i < array.length; i++) { int temp = i; for (int j = i + 1; j < array.length; j++) { if (array[j] < array[temp]) temp = j; } int flag = array[i]; array[i] = array[temp]; array[temp] = flag; } return array; }
插入排序 :将前面位置的当成是排好序的,然后依次将后面的数与前面排好序的数比较,直到找到它自己的位置放入
边比较边交换;
/** * 插入排序 * @return 排序后的数组 */ public static int[] insertSort(int[] array) { for (int i = 1; i < array.length; i++) { for (int j = i; j > 0 ; j--) { if (array[j] < array[j - 1]) { int flag = array[j]; array[j] = array[j - 1]; array[j - 1] = flag; } } } return array; }
总结:冒泡排序是,两两比较,并交换,每次选择出一个最大的放到最后(选最小的也一样,只是代码的区别);
选择排序是,设置标记位,然后与标记位比较,选出最小的数,然后交换;
插入排序是,和前面排好序的数比较,交换,放到合适的位置;