Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 676|回复: 0

java快速排序代码

[复制链接]

该用户从未签到

发表于 2011-9-18 13:24:51 | 显示全部楼层 |阅读模式
快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

public class QuickSoft {
      
       private void swap(int a[],int i,int j)
       {
        int tmp=a;
        a=a[j];
        a[j]=tmp;
       }
      
       private int partition(int a[],int p,int r)
       {
        int point = a[r];
        //将小于等于point的元素移到左边区域
        //将大于point的元素移到右边区域
        int index=p;
        for (int i = index; i < r; ++ i) {
               if (a-point <= 0) {
                   swap(a, index++, i);
               }
           }
           swap(a,index,r);
           return index;
       }
      
       public void qsort(int a[],int p,int r)
       {
        if(p< r)
        {
         //确定拆分点,并对数组元素进行移动
         //这是快速排序算法的关键步骤
         int q=partition(a,p,r);
         //对左半段排序
         qsort(a,p,q-1);
         //对右半段排序
         qsort(a,q+1,r);
        }
       }
      
     public static void main(String[] args) {
  //声明一个类
  QuickSoft ms=new QuickSoft();
  int len=10;
  int a[]=new int[len];
  //初始化a数组
  
  System.out.println("原始数组如下:");
  for(int i=0;i< a.length;i++)
  {
      //产生a.length个随机数
   a = (int)(Math.random()*100000);  
   System.out.println(a);
  }
  System.out.println("---------------------");
  System.out.println("第一次分组后");
  ms.partition(a,0,len-1);
   for(int i=0;i< a.length;i++)
  {
   System.out.println(a);
  }
System.out.println("---------------------");
  //快速排序
  ms.qsort(a, 0, len-1);
  
  
  
  System.out.println("排序后的数组如下:");
  for(int i=0;i< a.length;i++)
  {
   System.out.println(a);
  }
  
  
}
}


运行:
C:\work>java   QuickSoft
原始数组如下:
32054
89211
55927
97591
45554
75152
44392
94214
4932
68341
---------------------
第一次分组后
32054
55927
45554
44392
4932
68341
97591
94214
89211
75152
---------------------
排序后的数组如下:
4932
32054
44392
45554
55927
68341
75152
89211
94214
97591[/pre]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-11 02:43 , Processed in 0.309398 second(s), 36 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表