最近这一周,师兄布置的任务真是不少。把选择排序,冒泡排序,希尔排序,插入排序,快速排序在一周之内看了差不多。忽然感觉自己原来有这么大的能量啊。我自己都佩服我自己。加油!继续看贪心算法和动态规划。
仅仅有梦想是不够的,还得有实力!
希望四年之后,能够在编程上有所突破。成为一个能做出产品给人们生活带来便利的人!
一周时间,终于把各种排序算法有了最基本的了解。代码改了十几遍。终于完成了初稿,参考了很多大神的代码,在此一并感谢!
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));
}
}
不忘初心,方得始终!加油!!!