第2次实验——算法基本功 与 综合思考

来源:互联网 发布:深入浅出java pdf 编辑:程序博客网 时间:2024/05/17 08:58
(1)算法基本功——快速排序

    对文件 largeW.txt(下载链接)中的数据,应用快速排序算法进行排序,并与冒泡排序、归并排序进行时间比较。体验算法复杂度对设计算法的影响。

代码如下:

 

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. import java.io.File;  
  2. import java.io.FileNotFoundException;  
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5. import java.util.Scanner;  
  6.   
  7.   
  8. public class QuickSort {  
  9.   
  10.     public static void main(String[] args) {  
  11.         try {  
  12.             Scanner scanner=new Scanner(new File("src/largeW.txt"));  
  13.             List<Integer> list=new ArrayList<Integer>();  
  14.   
  15.             while(scanner.hasNext()){  
  16.                 list.add(scanner.nextInt());  
  17.             }  
  18.             Integer[] num= (Integer[]) list.toArray(new Integer[list.size()]);  
  19.             long start=System.currentTimeMillis();  
  20.             quickSort(num,0,num.length-1);  
  21.             long end=System.currentTimeMillis();  
  22.             System.out.println("快速排序花费的时间是:"+(end-start)+"毫秒");  
  23.             for(int i=0;i<num.length;i++){  
  24.                 System.out.println(num[i]);  
  25.             }  
  26.         } catch (Exception e) {  
  27.             // TODO Auto-generated catch block  
  28.             e.printStackTrace();  
  29.         }  
  30.     }  
  31.     public static void quickSort(Integer []num,int left,int right){  
  32.         if(left<right){  
  33.             int par_middle=partition(num,left,right);  
  34.             quickSort(num,left,par_middle-1);  
  35.             quickSort(num,par_middle+1,right);  
  36.         }  
  37.     }  
  38.     /** 
  39.      * 一趟快速排序 
  40.      * @param num 
  41.      * @param left 
  42.      * @param right 
  43.      * @return 
  44.      */  
  45.     public static int partition(Integer num[],int left,int right){  
  46.         int temp=num[left];//取数组的第一个数字作为中轴  
  47.         while(left<right){  
  48.             while(left<right&&num[right]>=temp){//判断从最后一个数往左稍描是否小于中轴  
  49.                 right--;  
  50.             }  
  51.             num[left]=num[right];//如果小于中轴,则交换位置  
  52.             while(left<right&&num[left]<=temp){  
  53.                 left++;  
  54.             }  
  55.             num[right]=num[left];//如果大于中轴则交换位置  
  56.         }  
  57.         num[left]=temp;//中轴值得两边都已排序,记录中轴值,方便下次继续排序  
  58.         return left;  
  59.     }  
  60. }  

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 喉咙里总是有痰怎么办 1岁宝宝喉咙有痰怎么办 嗓子总感觉有痰怎么办 嗓子痒感觉有痰怎么办 1岁宝宝嗓子有痰怎么办 3岁宝宝嗓子有痰怎么办 喉咙总感觉有痰怎么办 感冒了喉咙有痰怎么办 咽喉有异物感是怎么办 老感觉喉咙有痰怎么办 感冒有痰怎么办最有效 感冒快好了有痰怎么办 喉咙里一直有痰怎么办 一到晚上就咳嗽怎么办 1岁宝宝咳嗽痰多怎么办 3岁宝宝咳嗽痰多怎么办 六岁儿童咳嗽有痰怎么办 很多白痰在喉咙怎么办 我喉咙总是有痰怎么办 喉咙老感觉有痰怎么办 喉咙痒老是有痰怎么办 抽烟多了嗓子疼怎么办 抽烟多了老咳嗽怎么办 抽烟抽多了咳嗽怎么办 嗓子咳出异物臭怎么办 鼻子有鼻涕喉咙有痰怎么办 怀孕39周感冒了怎么办 一口痰卡在喉咙怎么办 鼻塞黄鼻涕黄痰怎么办 小孩咳嗽流黄鼻涕怎么办 小孩鼻塞怎么办最简单方法 有黄鼻涕黄痰怎么办 咳嗽有泡沫白痰怎么办 痰多咳嗽老不好怎么办 5岁儿童咳嗽有痰怎么办 感冒后一直有痰怎么办 感冒吐绿色的痰怎么办 孕妇咳嗽有痰怎么办啊 没结婚的人死了怎么办 金花鼠尾巴断了怎么办 辞职交了不批怎么办