java演示各种排序法
来源:互联网 发布:如何把3g网络变成2g 编辑:程序博客网 时间:2024/06/08 06:28
package com.test1;
import java.util.*;
public class Demo5_3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int len=100000;
int arr1[]=new int[len];
for(int i=0;i<len;i++)
{
//让程序随机产生一个1-10000的随机数
//Math.random()会产生一个0~1的数
int t=(int)(Math.random()*10000);
arr1[i]=t;
}
//int arr1[]={1,6,0,-1,9,-100,90,51,68,73,49,13};
//创建一个快速排序
QuickSort quicksort=new QuickSort();
//在排序前打印系统时间
Calendar cal=Calendar.getInstance();
System.out.println("quicksort排序前 "+cal.getTime());
quicksort.sort(0,len-1,arr1);
//重新得到实例
cal=Calendar.getInstance();
System.out.println("quicksort排序后 "+cal.getTime());
//创建一个插入排序
InsertSort insertsort=new InsertSort();
//在排序前打印系统时间
cal=Calendar.getInstance();
System.out.println("insertsort排序前 "+cal.getTime());
insertsort.sort(arr1);
//重新得到实例
cal=Calendar.getInstance();
System.out.println("insertsort排序后 "+cal.getTime());
//创建一个Bubble类
Bubble bubble=new Bubble();
//在排序前打印系统时间
cal=Calendar.getInstance();
System.out.println("bubble排序前 "+cal.getTime());
bubble.sort(arr1);
//重新得到实例
cal=Calendar.getInstance();
System.out.println("bubble排序后 "+cal.getTime());
///这里没有引用
/*
int a=12;
bubble.test(a);
System.out.println(a);
///这个也是直接传值
int b[]={12};
bubble.test1(b[0]);
System.out.println(b[0]);
///相当于是传了一个地址
bubble.test2(b);
System.out.println(b[0]);
*/
//创建一个Select类
Select select=new Select();
//在排序前打印系统时间
cal=Calendar.getInstance();
System.out.println("select排序前 "+cal.getTime());
select.sort(arr1);
//重新得到实例
cal=Calendar.getInstance();
System.out.println("select排序后 "+cal.getTime());
//输出结果
/*for(int i=0;i<arr1.length;i++)
{
System.out.print(arr1[i]+" ");
}*/
}
}
//快速排序法
class QuickSort
{
public void sort(int left,int right,int arr[])
{
int l=left;
int r=right;
int pivot=arr[(l+r)/2];
int temp=0;
while(l<r)
{
while(arr[l]<pivot)l++;
while(arr[r]>pivot)r--;
if(l>=r)break;
temp=arr[l];
arr[l]=arr[r];
arr[r]=temp;
if(arr[l]==pivot)--r;
if(arr[r]==pivot)++l;
}
//验证正确与否功能
/*System.out.println("the current array is ");
for(int i=0;i<7;i++)
{
System.out.print(arr[i]+" ");
}
System.out.println();*/
if(l==r)
{
l++;
r--;
}
if(left<r)sort(left,r,arr);
if(right>l)sort(l,right,arr);
}
}
//插入排序
class InsertSort
{
//插入排序方法
public void sort(int arr[])
{
for(int i=1;i<arr.length;i++)
{
int insertVal=arr[i];
//insertVal准备和前一个数比较
int index=i-1;
while(index>=0&&insertVal<arr[index])
{
//将把arr[index]向后移动
arr[index+1]=arr[index];
//让index向前移动一位
index--;
}
//将insertVal插入到适当位置
arr[index+1]=insertVal;
}
}
}
//选择排序
class Select
{
//选择排序
public void sort(int arr[])
{
//假设第一个数是最小的
int temp=0;
for(int j=0;j<arr.length-1;j++)
{
int min=arr[j];
//记录最小数的下标
int minIndex=j;
//第一个数不参与比较
for(int k=j+1;k<arr.length;k++)
{
if(min>arr[k])
{
//修改
min=arr[k];
minIndex=k;
}
}
//找到了最小值
temp=arr[j];
arr[j]=arr[minIndex];
arr[minIndex]=temp;
}
}
}
//冒泡排序
class Bubble
{
//测试
public void test(int a)
{
a++;
}
public void test1(int a)
{
a++;
}
public void test2(int a[])
{
a[0]++;
}
//排序方法
public void sort(int arr[])
{
int temp=0;
//排序
//外层循环
for(int i=0;i<arr.length-1;i++)
{
//内层循环依次比较
for(int j=0;j<arr.length-1-i;j++)
{
if(arr[j]>arr[j+1])
{
//换位
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
}
import java.util.*;
public class Demo5_3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int len=100000;
int arr1[]=new int[len];
for(int i=0;i<len;i++)
{
//让程序随机产生一个1-10000的随机数
//Math.random()会产生一个0~1的数
int t=(int)(Math.random()*10000);
arr1[i]=t;
}
//int arr1[]={1,6,0,-1,9,-100,90,51,68,73,49,13};
//创建一个快速排序
QuickSort quicksort=new QuickSort();
//在排序前打印系统时间
Calendar cal=Calendar.getInstance();
System.out.println("quicksort排序前 "+cal.getTime());
quicksort.sort(0,len-1,arr1);
//重新得到实例
cal=Calendar.getInstance();
System.out.println("quicksort排序后 "+cal.getTime());
//创建一个插入排序
InsertSort insertsort=new InsertSort();
//在排序前打印系统时间
cal=Calendar.getInstance();
System.out.println("insertsort排序前 "+cal.getTime());
insertsort.sort(arr1);
//重新得到实例
cal=Calendar.getInstance();
System.out.println("insertsort排序后 "+cal.getTime());
//创建一个Bubble类
Bubble bubble=new Bubble();
//在排序前打印系统时间
cal=Calendar.getInstance();
System.out.println("bubble排序前 "+cal.getTime());
bubble.sort(arr1);
//重新得到实例
cal=Calendar.getInstance();
System.out.println("bubble排序后 "+cal.getTime());
///这里没有引用
/*
int a=12;
bubble.test(a);
System.out.println(a);
///这个也是直接传值
int b[]={12};
bubble.test1(b[0]);
System.out.println(b[0]);
///相当于是传了一个地址
bubble.test2(b);
System.out.println(b[0]);
*/
//创建一个Select类
Select select=new Select();
//在排序前打印系统时间
cal=Calendar.getInstance();
System.out.println("select排序前 "+cal.getTime());
select.sort(arr1);
//重新得到实例
cal=Calendar.getInstance();
System.out.println("select排序后 "+cal.getTime());
//输出结果
/*for(int i=0;i<arr1.length;i++)
{
System.out.print(arr1[i]+" ");
}*/
}
}
//快速排序法
class QuickSort
{
public void sort(int left,int right,int arr[])
{
int l=left;
int r=right;
int pivot=arr[(l+r)/2];
int temp=0;
while(l<r)
{
while(arr[l]<pivot)l++;
while(arr[r]>pivot)r--;
if(l>=r)break;
temp=arr[l];
arr[l]=arr[r];
arr[r]=temp;
if(arr[l]==pivot)--r;
if(arr[r]==pivot)++l;
}
//验证正确与否功能
/*System.out.println("the current array is ");
for(int i=0;i<7;i++)
{
System.out.print(arr[i]+" ");
}
System.out.println();*/
if(l==r)
{
l++;
r--;
}
if(left<r)sort(left,r,arr);
if(right>l)sort(l,right,arr);
}
}
//插入排序
class InsertSort
{
//插入排序方法
public void sort(int arr[])
{
for(int i=1;i<arr.length;i++)
{
int insertVal=arr[i];
//insertVal准备和前一个数比较
int index=i-1;
while(index>=0&&insertVal<arr[index])
{
//将把arr[index]向后移动
arr[index+1]=arr[index];
//让index向前移动一位
index--;
}
//将insertVal插入到适当位置
arr[index+1]=insertVal;
}
}
}
//选择排序
class Select
{
//选择排序
public void sort(int arr[])
{
//假设第一个数是最小的
int temp=0;
for(int j=0;j<arr.length-1;j++)
{
int min=arr[j];
//记录最小数的下标
int minIndex=j;
//第一个数不参与比较
for(int k=j+1;k<arr.length;k++)
{
if(min>arr[k])
{
//修改
min=arr[k];
minIndex=k;
}
}
//找到了最小值
temp=arr[j];
arr[j]=arr[minIndex];
arr[minIndex]=temp;
}
}
}
//冒泡排序
class Bubble
{
//测试
public void test(int a)
{
a++;
}
public void test1(int a)
{
a++;
}
public void test2(int a[])
{
a[0]++;
}
//排序方法
public void sort(int arr[])
{
int temp=0;
//排序
//外层循环
for(int i=0;i<arr.length-1;i++)
{
//内层循环依次比较
for(int j=0;j<arr.length-1-i;j++)
{
if(arr[j]>arr[j+1])
{
//换位
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
}
0 0
- java演示各种排序法
- java冒泡排序演示
- java选择排序演示
- java插入排序演示
- 各种经典排序算法演示,非常值得一看
- 在线动画演示各种排序算法过程
- 可视化数据结构以及各种排序算法演示
- JAVA-各种代码块的演示
- 排序算法演示:冒泡法 (FLASH演示)
- Hive的各种排序详解与代码演示
- java各种排序方法
- java各种排序方法
- java各种排序
- java各种排序
- java各种排序
- java各种排序
- java中各种排序
- 【 Java】各种排序算法
- 调用快排
- assets目录下的文件拷贝到sd卡目录下
- js弹出框、对话框、提示框、弹窗总结
- 【opencv+C++】在图像中找四边形
- iOS-iphone开发中的 一些小技巧
- java演示各种排序法
- iOS-openURL 运行其他的应用程序
- android的消息处理机制(图+源码分析)——Looper,Handler,Message
- iOS-使用Objective-C建立UUID
- 在家没事干,整理个Controller+Eary UI patr1
- hello world
- poj解题报告——1328
- Objective-C之成魔之路【18-复制对象】
- iOS-正确使用PresentModalViewController