快速排序(二)

原创 2006年06月22日 13:49:00

/**
 * 参考:http://caterpillar.onlyfun.net/Gossip/AlgorithmGossip/QuickSort3.htm
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2006</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */
public class QuickSort1 {
  public static void swap(int[] number, int i, int j) { //交换number数组索引i,j处的值
    int tmp;
    tmp = number[i];
    number[i] = number[j];
    number[j] = tmp;
  }
  public static void sort(int[] number,int left,int right){
    if(left < right){
      int p  = partition(number,left,right);
      sort(number,left,p-1);
      sort(number,p+1,right);
    }
  }
  public static int partition(int[] number, int left, int right) {
    int i = left - 1;
    int s = number[right];
    int tmp;
    for ( int j = left; j < right ; j++) {
      if (number[j] <= s){
        swap(number, ++i, j);
      }
    }
    swap(number, ++i, right);
    return i;
  }

  public static void print(int[] number) { //打印输入数组内容
    for (int i = 0; i < number.length; i++) {
      System.out.print(number[i] + ",");
    }
    System.out.println("");
  }

  public static void main(String[] args) {
    int[] number = {
        2, 8, 7, 1, 3, 5, 6, 4};
    sort(number, 0, number.length - 1);

    print(number);
  }
}

java 算法基础之二快速排序算法

所谓的快速排序的思想就是,首先把数组的第一个数拿出来做为一个key,在前后分别设置一个i,j做为标识,然后拿这个key对这个数组从后面往前遍历,及j--,直到找到第一个小于这个key的那个数,然后交换...

算法导论二:快速排序

快速排序采用的是分治策略,其方法是将一个数组a[p,r]划分为两个子数组a[p,q-1],a[q+1,r],使其左子数组元素中的元素均小于等于a[q],右子数组元素均大于a[q],并递归划分两个子数组...

快速排序(二)

快速排序 一、介绍   快速排序和合并排序有点类似,两者可以相互比较。快速排序也是像合并排序那样将整个序列分成两段分别进行排序。但是快速排序没有合并排序的合并过程。      该算法...
  • hgy2011
  • hgy2011
  • 2012年05月20日 00:28
  • 342

算法学习(二)快速排序(下)

里是将数组的最后一个元素作为基准数来比较,如图中a[8] = 10。 2)同样的,也有两个指针i 跟 j,但 i 一开始的位置是起始位置 - 1,如上面应该是 0 - 1 = -1。为什么会是这样呢?...

快速排序二

public class ArrayIns { private long[] theArray; private int nElems; public ArrayIns(int ...

深入快速排序(QuickSort)(二)简单伪代码

一、快速排序算法:QuickSort public void QuickSort(SeqList R,int low,int high){ //对R[low...high]进行快速排序 ...
  • howlaa
  • howlaa
  • 2013年03月15日 15:16
  • 5035

Java实现快速排序(二)

快速排序是一种分治法的思想,主要思想是首先找一个“基准”元素,将所有比基准元素大的元素放到基准元素右边,所有比基准元素小的元素放到基准元素左边,这样基准元素在整个序列中的最终位置就确定了,同时,基准元...

【算法导论之二】快速排序算法

快速排序算法是排序算法集合中相对比较优秀的一个,运行速度快、效率高,而且它是“原地排序”节省内存,也是分治法思想的体现。 算法思想:快速排序是在给定的集合中选取一个元素作为元数据,然后对集合进行分区操...

算法学习(二)快速排序(上)

1)首先要有两个指针,一个从最前面开始,一个从最后面开始。 2)将数组中第一个元素拿出来,作为一个基准数来比较,比它大的,扔到后面,比它小的扔前面。而由于将它拿出来了,它原先所处的位置就空出来了,如图...

算法之道(二):快速排序—三路快排 vs 双基准

快速排序被公认为是本世纪最重要的算法之一,这已经不是什么新闻了。对很多语言来说是实际系统排序,包括在Java中的Arrays.sort。 那么快速排序有什么新进展呢? 好吧,就像我刚才提到的那样(...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:快速排序(二)
举报原因:
原因补充:

(最多只允许输入30个字)