排序算法
2016-05-09 13:21
344 查看
最近这一周,师兄布置的任务真是不少。把选择排序,冒泡排序,希尔排序,插入排序,快速排序在一周之内看了差不多。忽然感觉自己原来有这么大的能量啊。我自己都佩服我自己。加油!继续看贪心算法和动态规划。
仅仅有梦想是不够的,还得有实力!
希望四年之后,能够在编程上有所突破。成为一个能做出产品给人们生活带来便利的人!
一周时间,终于把各种排序算法有了最基本的了解。代码改了十几遍。终于完成了初稿,参考了很多大神的代码,在此一并感谢!
不忘初心,方得始终!加油!!!
仅仅有梦想是不够的,还得有实力!
希望四年之后,能够在编程上有所突破。成为一个能做出产品给人们生活带来便利的人!
一周时间,终于把各种排序算法有了最基本的了解。代码改了十几遍。终于完成了初稿,参考了很多大神的代码,在此一并感谢!
package wode; public class Example11 { //写一个交换数组的方法 static void swap(int a,int b){ int temp; temp=a; a=b; b=temp; } //写一个产生随机数的方法 static int[] random(){ int[] e =new int[100000]; java.util.Random r= new java.util.Random(); for(int i=0;i<100000;i++){ e[i]=r.nextInt(); } return e; } //写一个打印数组的方法 static void print(int[] a){ for(int i=0;i<a.length;i++){ System.out.print(a[i]+" "); } } //快速排序1 static void quick_sort1(int s[], int l, int r) { if (l < r) { int i = l, j = r, x = s[l]; while (i < j) { while(i < j && s[j] <= x) j--; if(i < j) s[i] = s[j]; while(i < j && s[i] >= x) i++; if(i < j) s[j] = s[i]; } s[j] = x; quick_sort1(s, l, j - 1); quick_sort1(s, j + 1, r); } } //快速排序2 static int quick_sort2(int[] a,int beg,int end){ int last = a[end]; int i = beg -1; for (int j = beg; j <= end-1; j++) { if(a[j] <= last){ i++; if(i != j){ a[i] = a[i]^a[j]; a[j] = a[i]^a[j]; a[i] = a[i]^a[j]; } } } if((i+1) != end){ a[i+1] = a[i+1]^a[end]; a[end] = a[i+1]^a[end]; a[i+1] = a[i+1]^a[end]; } return i+1; } //选择排序 static void sort(int[] a){ for(int i=0;i<a.length;i++){ int idx=0; for(int j=0;j<i;j++){ if(a[j]>a[idx]) { idx=j; } } swap(a[i],a[idx]); } } //冒泡排序 static void bubbleSort(int [] a){ int min=0; for(int i=0;i<a.length;i++){ min=i; for(int j=i+1;j<a.length;j++){ if(a[min]>a[j]){ min= j; } } if (i!=min){ swap(a[min],a[i]); } } } // 插入排序 static void insertSort(int[] array){ for(int out=1;out<array.length;out++){ int temp= array[out]; int in= out; while(in>0&&temp<array[in-1]){ array[in]=array[in-1]; in--; } array[in]=temp; } } // 希尔排序 static void shellsort(int a[] ,int n){ int j,gap; for(gap=n/2;gap>0;gap/=2){ for(j=gap;j<n;j++){ if(a[j]<a[j-gap]){ int temp=a[j]; int k=j-gap; while(k>=0&&a[k]>temp){ a[k+gap]=a[k]; k-=gap; } a[k+gap]=temp; } } } } public static void main(String[] args){ int[] e1=random(); long a1=System.currentTimeMillis(); quick_sort1(e1,0,e1.length-1); long b1=System.currentTimeMillis(); System.out.println("快速排序1用时"+(b1-a1)); int[] e6=random(); long a6=System.currentTimeMillis(); quick_sort1(e6,0,e1.length-1); long b6=System.currentTimeMillis(); System.out.println("快速排序2用时"+(b6-a6)); int[] e2=random(); long a2=System.currentTimeMillis(); sort(e2); long b2=System.currentTimeMillis(); System.out.println("选择排序用时"+(b2-a2)); int[] e3=random(); long a3=System.currentTimeMillis(); bubbleSort(e3); long b3=System.currentTimeMillis(); System.out.println("冒泡排序用时"+(b3-a3)); int[] e4=random(); long a4=System.currentTimeMillis(); shellsort(e4,e4.length-1); long b4=System.currentTimeMillis(); System.out.println("希尔排序用时"+(b4-a4)); int [] e5=random(); long a5=System.currentTimeMillis(); insertSort(e5); long b5=System.currentTimeMillis(); System.out.println("插入排序用时"+(b5-a5)); } }
不忘初心,方得始终!加油!!!
相关文章推荐
- POJ1005
- LeetCode 278. First Bad Version
- C 运算符优先级列表
- Palindromic Squares
- mysql char、varchar
- Dremel和Hadoop
- C语言————常量 、变量、 表达式、 语句详谈
- Yii2.0 RESTful Web服务(4)
- 一站式远程页面调试工具spy-debugger 2.0,已支持HTTPS
- vagrant搭建lamp开发环境
- Android_Studio 及SDK下载
- Hadoop笔记2016-05-09
- JavaScript的获取非行间样式
- java基本排序算法总结 (二)——快速排序法
- HashMap与HashTable的区别?
- 致caozhy
- 数据挖掘与R语言,数据分析,机器学习
- 快速排序
- CSS中的圣杯布局,以及圣杯布局与双飞翼布局的区别
- Eclipse下使用Maven搭建SpringMVC项目