算法小结-冒泡、选择排序、直接插入排序

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

原文地址:https://www.cnblogs.com/jycboy/p/5256034.html