CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

想学习排序算法

楼主wuya7002(乌鸦)2005-08-01 16:21:39 在 Java / J2SE / 基础类 提问

有没有实现数据排序算法     是用Java技术编写的Java   applet   程序 问题点数:50、回复次数:8Top

1 楼cat_871017(零下九度)回复于 2005-08-01 22:59:38 得分 15

去看JDK安装文件夹下的demo\applets\SortDemo下的网页,有源程序Top

2 楼yangbc(土豆块)回复于 2005-08-02 00:01:30 得分 5

就那几个排序算法,看看c语言的数据结构就行了Top

3 楼lei198203(lei)回复于 2005-08-02 08:57:25 得分 5

想学排序,   一定要看数据结构.Top

4 楼zawx(submarine)回复于 2005-08-02 09:02:31 得分 5

nod,data   structureTop

5 楼inexplicable(inexplicable)回复于 2005-08-02 09:11:22 得分 5

对阿,java只是一种实现方式而已,重要的是算法本身的思想,  
  懂了用什么语言都可以阿。  
  找一本data   structure   的书吧。Top

6 楼rower203(华仔)回复于 2005-08-02 10:01:29 得分 15

一个例子:  
  public   class   QuickSort   {  
          public   int[]   quickSort(int[]   data,   int   leftP,int   rightP,int   index)  
          {  
                    int   i,j;  
                    int   pivot;  
                    int   temp;  
   
                    i=leftP+1;  
                    j=rightP;  
   
                    if   (i==j   &&   data[j]<data[leftP])  
                    {  
  temp=data[leftP];  
  data[leftP]=data[j];  
  data[j]=temp;  
  }  
                     
                    pivot=data[leftP];  
                     
                    if(i<j)  
                    {  
                              do  
                              {  
                                        while(data[i]<=pivot   &&   i<j)  
                                        {  
                                                  i++;  
                                        }  
   
                                        while(data[j]>=pivot   &&   j>i)  
                                        {  
                                          j--;  
                                        }  
   
                                         
                                        if(i<j)  
                                        {  
                                                  temp=data[i];  
                                                  data[i]=data[j];  
                                                  data[j]=temp;  
                                        }  
                                         
                                        if   (i==j)    
                                        {  
                                        if   (data[j]>data[leftP])   j=j-1;  
                                                temp=data[leftP];  
                                                data[leftP]=data[j];  
                                                data[j]=temp;  
                                        }  
                              }while(i<j);                
                              if   (j>leftP+1)  
                              quickSort(data,   leftP,j-1,index);  
                              if   (j<rightP-1)  
                              quickSort(data,   j+1,rightP,index);    
                    }  
                    return   data;  
          }  
           
          public   void   printResult(int[]   data,   String   msg){  
          System.out.print(msg);  
                  for(int   i   =   0;   i   <   data.length;   i++)  
                  {  
                            System.out.print("   "   +   data[i]   +   "   ");  
                  }  
                  System.out.println("");  
          }  
           
          public   static   void   main(String   []args)  
          {  
          int[]   data={4,6,2,9,5,21,7,3};                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               ;  
   
                  QuickSort   qs   =   new   QuickSort();  
                  qs.printResult(data,   "Before   Quick   Sorting:   ");  
                  data   =   qs.quickSort(data,   0,   data.length-1,   data.length);  
                  qs.printResult(data,   "After   Quick   Sorting   :   ");  
          }  
  }Top

7 楼rower203(华仔)回复于 2005-08-02 11:04:46 得分 0

有Bug,改了改:  
  public   class   QuickSort   {  
          public   int[]   quickSort(int[]   data,   int   leftP,int   rightP)  
          {  
                    int   i   =   leftP;  
                    int   j   =   rightP;  
   
                    if(i   <   j){  
                              do   {  
  //                             printResult(data,   "now:   ");  
                                        while(data[i]   <   data[leftP]   &&   i   <   j){  
                                        i++;  
                                        }  
   
                                        while(data[j]   >   data[leftP]   &&   j   >   i){  
                                        j--;  
                                        }  
   
                                        if(i   <   j){  
                                        exchangeData(data,   i,   j);  
                                        }  
                                         
                                        if   (i   ==   j)   {  
                                        if   (data[j]   >   data[leftP]){  
                                        j--;  
                                        }  
                                                exchangeData(data,   j,   leftP);  
                                        }  
                              }   while(i   <   j);  
                               
                              if   (j   >   ++leftP){  
                              quickSort(data,   leftP,   --j);  
                              }  
                              if   (j   <   rightP   -   1){  
                              quickSort(data,   ++j,   rightP);    
                              }  
                    }  
                    return   data;  
          }  
           
          private   void   exchangeData(int[]   data,   int   a,   int   b){  
          int   tmp   =   data[a];  
          data[a]   =   data[b];  
          data[b]   =   tmp;  
          }  
           
          public   void   printResult(int[]   data,   String   msg){  
          System.out.print(msg);  
                  for(int   i   =   0;   i   <   data.length;   i++)  
                  {  
                            System.out.print("   "   +   data[i]   +   "   ");  
                  }  
                  System.out.println("");  
          }  
           
          public   static   void   main(String   []args)  
          {  
          int[]   data={4,6,2,9,5,21,7,23,43,34,11,1};  
                  QuickSort   qs   =   new   QuickSort();  
                  qs.printResult(data,   "Before   Quick   Sorting:   ");  
                  data   =   qs.quickSort(data,   0,   data.length-1);  
                  qs.printResult(data,   "After   Quick   Sorting   :   ");  
          }  
  }Top

8 楼wuya7002(乌鸦)回复于 2005-08-02 15:25:25 得分 0

多谢几位拉!!Top

相关问题

  • 求排序算法~~~~~~~~~~~~!!!
  • 排序的最快算法?
  • 全排序算法问题?
  • 这何种算法?(排序)
  • 关于排序算法
  • 求桶排序算法
  • 急!!多列排序算法!
  • 学习算法
  • 排序算法得问题请教...
  • 求解链表的排序算法

关键词

  • 算法
  • 排序
  • leftp
  • quicksort
  • temp
  • data

得分解答快速导航

  • 帖主:wuya7002
  • cat_871017
  • yangbc
  • lei198203
  • zawx
  • inexplicable
  • rower203

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo