各种排序算法时间复杂度和空间复杂度表

各种排序算法时间复杂度和空间复杂度表:
 各种排序算法时间复杂度和空间复杂度表

比较时间复杂度函数的情况如下图:
 比较时间复杂度函数的情况

对n较大的排序记录。一般的选择都是时间复杂度为O(nlog2n)的排序方法:
所以对n较大的排序记录。一般的选择都是时间复杂度为O(nlog2n)的排序方法。

对于八大排序算法的总结推荐我的这篇文章: 八大排序算法总结与java实现


一、快速排序(Quicksort)

import java.util.Arrays;

public class MySort {
    public static void main(String args[]){
        int[] array = {5,3,9,1,6,4,10,2,8,7};
        System.out.println("Before: " + Arrays.toString(array));
        new MySort().quickSort(array, 0, array.length-1);
        System.out.println("After:  " + Arrays.toString(array));
    }

    /**
     * 快速排序: 递归实现的挖坑填数法
     * @param array
     * @param left
     * @param right
     */
    private void quickSort(int[] array, int left, int right){
        if(left >= right){
            return;
        }

        int i = left;
        int j = right;
        int key = array[left];
        while(i<j){
            while(array[j] >= key && i<j){  //从后向前搜索,比key小的值就挖出来填到i处的坑
                j--;
            }
            array[i] = array[j];
            while(array[i] <= key && i<j){  //从前向后搜索,找出比key大的值填到刚才j处空缺的坑
                i++;
            }
            array[j] = array[i];
        }
        array[i] = key;     //把key回填到数组的空缺处
        System.out.println("Sort:   " + Arrays.toString(array));
        quickSort(array, left, i-1);
        quickSort(array, i+1, right);
    }
}
快速排序的测试代码输出结果如下:

Before: [5, 3, 9, 1, 6, 4, 10, 2, 8, 7]
Sort:   [2, 3, 4, 1, 5, 6, 10, 9, 8, 7]
Sort:   [1, 2, 4, 3, 5, 6, 10, 9, 8, 7]
Sort:   [1, 2, 3, 4, 5, 6, 10, 9, 8, 7]
Sort:   [1, 2, 3, 4, 5, 6, 10, 9, 8, 7]
Sort:   [1, 2, 3, 4, 5, 6, 7, 9, 8, 10]
Sort:   [1, 2, 3, 4, 5, 6, 7, 9, 8, 10]
Sort:   [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
After:  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]


【参考资料】:

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值