A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郭孟涛 高级黑马   /  2013-1-28 02:23  /  1164 人查看  /  5 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文


评分

参与人数 1黑马币 +6 收起 理由
黄锦成 + 6

查看全部评分

5 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
学习的了
回复 使用道具 举报
能把每种算法写出来就更好了
回复 使用道具 举报
要是能给出想要的java算法程序就更好了。
回复 使用道具 举报
  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. }
复制代码
我先贴个快速排序的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马