排序的Java实现

来源:互联网 发布:淘宝联盟结算第三方 编辑:程序博客网 时间:2024/05/29 17:17

从头开始寻找,只有找到比自己小的就交换位置:

public static void maoPaoSort(int[] array)

    {
        for(int i = 0 ;i < array.length-1;i++)
        {
            for(int j =0;j<array.length-1-i;j++)
            {
                if(array[j] > array[j+1])
                {
                    swap(array, i, j);

                }
                
            }
            System.out.println(Arrays.toString(array));
            
        }

    }
    
    

    找到一个值,分二之至,是的左边的树都比它小,右边都比它大,递归排序:


    public static void quickSort(int[] array,int low, int hi)
    {
        if(low>=hi){return;}
        int index = partpoint(array, low, hi);
        quickSort(array,low,index-1);
        quickSort(array, index+1, hi);
    }
    
    //找到快速排序的标准值
    public static int partpoint(int[] array, int low, int hi)
    {
        int key = array[low];
        while(low<hi)
        {
            //前半部分扫描--开始
            while(key<=array[hi] && low < hi)
            {
                hi--;
            }
            array[low] = array[hi];
            System.out.println(Arrays.toString(array));
            System.out.println("前半部分扫描--结束 ");
            //前半部分扫描 --结束
            
            //后半部分扫描--开始
            while(key>=array[low] && low < hi)
            {
                low++;
            }
            array[hi] = array[low];
            System.out.println(Arrays.toString(array));
            System.out.println("后半部分扫描--结束");
            //后半部分扫描--结束
        }
        array[hi] = key;
        System.out.println("********");
        System.out.println(Arrays.toString(array));
        return hi;
    }
    

  将当前带排序的值插入已有的有序序列中:


    public static void insertSort(int[] array)
    {
        int insertNode,j;
        for(int i = 1; i <array.length;i++)
        {
            insertNode = array[i];
            j = i-1;
            while(j >=0 && insertNode<array[j])
            {
                array[j+1] = array[j];
                j--;
            }
            array[j+1] = insertNode;
        }
        
    }
    

  每次都找最小在交换:


    public static void choiceSort(int[] array)
    {
        for(int i =0;i < array.length;i++)
        {
            int min = i;
            for(int j = i+1;j<array.length;j++)
            {
                if(array[min] > array[j])
                {
                    //找到最小值的位置
                    min = j;
                }
            }
            //不相等说明找到了最小的,则交换
            if(i != min)
            {
                swap(array, i, min);
            }
        }
    }

}
原创粉丝点击