zoukankan      html  css  js  c++  java
  • 快速排序

    快速排序对包含n个数的输入数组,最坏情况运行时间为Θ(n2), 但快速排序通常是用于排序的最佳的实用选择,

    这是因为其平均性能相当好:期望的运行时间为Θ(nlgn), 且Θ(nlgn)记号中隐含的常数因子很小,另外它还能

    进行就地排序。

    伪码:

    QUICKSORT(A, p, r)
      if p < r
        then q ← PARTITION(A, p, r)
          QUICKSORT(A, p, q - 1)
          QUICKSORT(A, q + 1, r)

    数组划分:

    PARTITION(A, p, r)
      x ← A[r]
      i ← p - 1
      for j ← p to r - 1
        do if A[j] <= x
          then i ← i + 1
            exchange A[i] ↔ A[j]
      exchange A[i + 1] ↔ A[r]
      return i + 1

    Java实现:

        public void quickSort(int[] a, int p, int r)
        {
            if (p < r)
            {
                int q = partition(a, p, r);
                quickSort(a, p, q - 1);
                quickSort(a, q + 1, r);
            }
            
        }
        
        private int partition(int[] a, int p, int r)
        {
            int x = a[r];
            int i = p - 1;
            for (int j = p; j < r; j++)
            {
                if (a[j] <= x)
                {
                    i = i + 1;
                    swap(a, i, j);
                }
            }
            swap(a, i + 1, r);
            return i + 1;
        }
        
        private void swap(int[] data, int src, int des)
        {
            int tmp = data[des];
            data[des] = data[src];
            data[src] = tmp;
        }
  • 相关阅读:
    uva11729
    1.RabbitMQ介绍
    4.RabbitMQ Linux安装
    3.RabbitMQ 第一个程序
    2.RabbitMQ Window环境安装
    hdu 1757 A Simple Math Problem 矩阵快速幂
    hdu2222 Keywords Search AC自动机
    hdu 2159 二维完全背包
    POJ 3449 Geometric Shapes 判断多边形相交
    POJ 2826 An Easy Problem? 判断线段相交
  • 原文地址:https://www.cnblogs.com/zhuqiang/p/2486017.html
Copyright © 2011-2022 走看看