排序---1.插入排序

来源:互联网 发布:unity3d sharesdk 编辑:程序博客网 时间:2024/06/16 13:01

插入排序思想:


使用java代码加以实现:

是否

package chapter5;public class InsertSort {/* *注意:递增插入排序  5,6,7,8,9 *且a[0]为哨兵。 * */public static int[] insertSort(int...a){//外层for循环对应第i趟,欲插入的元素为a[i]。且总共走完length-2趟就保证有序。//(因为这里使用数组第一个a[0]是哨兵,数组实际长度为length-1,排序length-2次就有序了)for(int i = 2; i <= a.length - 1; i++){if(a[i] < a[i-1]){//只有a[i] < a[i-1],才比较然后插入a[0] = a[i];a[i] = a[i-1];//复制为哨兵int j;for(j = i -2; a[0] < a[j]; j--){//记录后移a[j + 1] = a[j];}a[j + 1] = a[0];//插入到正确的位置}}return a;}/* *注意:递减插入排序  9,8,7,6,5 *且a[0]为哨兵。 * */public static int[] insertSortDesc(int...a){//外层for循环对应第i趟,欲插入的元素为a[i]。且总共走完length-2趟就保证有序。//(因为这里使用数组第一个a[0]是哨兵,数组实际长度为length-1,排序length-2次就有序了)for(int i = 2; i <= a.length - 1; i++){if(a[i] > a[i-1]){//只有a[i] > a[i-1],才比较然后插入a[0] = a[i];a[i] = a[i-1];//复制为哨兵int j;for(j = i -2; a[0] > a[j]; j--){//记录后移a[j + 1] = a[j];}a[j + 1] = a[0];//插入到正确的位置}}return a;}public static void main(String[] args) {int[] a = {0,23,79,6,4,3,13,19};    //a[0]为哨兵,并不是数组中待排序的数据。int[] result = insertSort(a);System.out.println("数组递增排序结果:");for(int i = 1; i < result.length; i++){System.out.print(result[i] + " ");}System.out.println();int[] resultDesc = insertSortDesc(a);System.out.println("数组递减排序结果:");for(int i = 1; i < resultDesc.length; i++){System.out.print(resultDesc[i] + " ");}}}

运行结果:



冒泡排序  经过优化后    生成了快速排序算法。


1 0