黑马程序员技术交流社区

标题: Java程序员必知的8大排序 [打印本页]

作者: 郭孟涛    时间: 2013-1-28 02:23
标题: Java程序员必知的8大排序


作者: 许庭洲    时间: 2013-1-28 08:53
值得学习ing!
作者: Just_Only    时间: 2013-1-28 08:54
学习的了
作者: yong230    时间: 2013-1-28 13:46
能把每种算法写出来就更好了
作者: 朱玉玺    时间: 2013-1-28 16:26
要是能给出想要的java算法程序就更好了。
作者: 朱玉玺    时间: 2013-1-28 16:28
  1. public class Test1 {

  2.         /**
  3.          * @param args
  4.          */
  5.         public static void main(String[] args)
  6.         {
  7.                 int [] arr ={10,45,31,56,78,120,120,86};
  8.                 print(arr);
  9.                 quickSort(arr,0,arr.length-1);
  10.                 print(arr);
  11.                

  12.         }
  13.         /**
  14.          *
  15.          * @param arr
  16.          * @param l
  17.          * @param r
  18.          * 快速排序
  19.          */
  20.         public static void quickSort(int [] arr,int l, int r)
  21.         {
  22.                 //分治法
  23.                 if(l<r)
  24.                 {
  25.                         //获得第一次分成两段的位置
  26.                         int pos = getPos(arr,l,r);
  27.                        
  28.                         //对分成的两段分别递归调用
  29.                         quickSort(arr,l,pos-1);
  30.                         quickSort(arr,pos+1,r);
  31.                 }
  32.         }
  33.         /**
  34.          *
  35.          * 获取数组第一个元素在排好序好的数组中的位置,并将该元素放在该位置上
  36.          */
  37.         public static int getPos(int[] arr,int l, int r)
  38.         {
  39.                 int key = arr[l];
  40.                 while(l<r)
  41.                 {
  42.                         //从后向前找到第一个小于key的元素。
  43.                         while(l<r && arr[r]>=key)
  44.                                 r--;
  45.                         swap(arr,l,r);
  46.                        
  47.                         //交换位置换,从前向后找到第一个大于key的元素。
  48.                         while(l<r&& arr[l]<key)
  49.                                 l++;
  50.                         swap(arr,l,r);
  51.                 }
  52.                 //循环结束后,r=l;
  53.                 return r;
  54.         }
  55.         /**
  56.          * 数组元素位置交换
  57.          */
  58.         public static void swap(int [] arr,int x,int y)
  59.         {
  60.                 int temp = arr[x];
  61.                 arr[x] = arr[y];
  62.                 arr[y] = temp;
  63.         }
  64.         /**
  65.          *数组打印方法
  66.          */
  67.         public static void print(int [] arr)
  68.         {
  69.                 for(int x:arr)
  70.                 {
  71.                         System.out.print(x+" ");
  72.                 }
  73.                 System.out.println();
  74.         }
  75.        

  76. }
复制代码
我先贴个快速排序的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2