JAVA 几种常用排序的实现
来源:互联网 发布:淘宝那个助手好 编辑:程序博客网 时间:2024/05/21 20:17
/**
* 功能:排序
* huwb
* 2013.9.4
*/
package arraytest;
import java.util.*;
public class seq_1 {
/**
* @param args
*/
public static void main(String[] args) {
int len=5000000;
int arr1[]=new int[len];
// int arr2[]=new int[len];
// int arr3[]=new int[len];
int arr4[]=new int[len];
int p=0;
if (len>5000)
p=5000;
else
p=len;
for (int i=0;i<len;i++)
{
int t=(int)(Math.random()*10000000);
arr1[i]=t;
}
// arr2=arr1;
// arr3=arr1;
arr4=arr1;
// Select s=new Select();
// Bubble b=new Bubble();
// Insert i=new Insert();
Quick q=new Quick();
Calendar cal1=Calendar.getInstance();
// System.out.println(cal1.getTime());
//
// b.sort(arr1);
//
// cal1=Calendar.getInstance();
// System.out.println(cal1.getTime());
// for (int m=0;m<p;m++)
// {
// System.out.print(arr1[m] + " ");
// }
// System.out.println( );
//
//
// cal1=Calendar.getInstance();
// System.out.println(cal1.getTime());
//
// s.sort(arr2);
//
// cal1=Calendar.getInstance();
// System.out.println(cal1.getTime());
//
// for (int j=0;j<p;j++)
// {
// System.out.print(arr2[j] + " ");
// }
// System.out.println( );
//
// cal1=Calendar.getInstance();
// System.out.println(cal1.getTime());
//
// i.sort(arr3);
//
// cal1=Calendar.getInstance();
// System.out.println(cal1.getTime());
//
// for (int m=0;m<p;m++)
// {
// System.out.print(arr3[m] + " ");
// }
System.out.println( );
// cal1=Calendar.getInstance();
System.out.println(cal1.getTime());
Date d1=new Date();
q.sort(0,arr4.length-1,arr4);
Date d2=new Date();
System.out.println("快速排序时间:" + (d2.getTime() - d1.getTime())/1000);
cal1=Calendar.getInstance();
System.out.println(cal1.getTime());
for (int l=0;l<p;l++)
{
System.out.print(arr4[l] + " ");
}
}
}
//选择排序
class Select
{
public void sort(int arr[])
{
if (arr.length < 2) return;
int temp=0;
int index=0;
int min=0;
Date d1=new Date();
for (int i=0;i<arr.length;i++)
{ index=i;
min=arr[i];
for (int j=i+1;j<arr.length;j++)
{
// seq_1.counter++;
if (arr[j]<min)
{
index=j;
min=arr[j];
}
}
temp=arr[i];
arr[i]=arr[index];
arr[index]=temp;
}
Date d2=new Date();
System.out.println("选择排序时间:" + (d2.getTime() - d1.getTime())/1000);
}
}
//冒泡排序
class Bubble
{
public void sort(int arr[])
{
if (arr.length < 2) return;
int temp=0;
Date d1=new Date();
for (int i=0;i<arr.length-1;i++)
{
for (int j=0;j<arr.length-1-i;j++)
{
// seq_1.counter++;
if (arr[j+1]<arr[j])
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
Date d2=new Date();
System.out.println("冒泡排序时间:" + (d2.getTime() - d1.getTime())/1000);
}
}
//快速排序
class Quick
{
public void sort(int left,int right,int arr[])
{
//排序开始
if(right<=left) return;
if(arr==null||arr.length==0)return;
int temp=0;
int r=right;
int l=left;
//arr[left];//关键值为数组最左边的数据
do
{
//由后面向前找,找到比arr[left]值小的就停止,停止条件是arr[right]<arr[right]
while(left<right&&arr[left]<=arr[right])right--;
//arr[left]值和arr[right]交换,交换后关键值存在于arr[right]中
if (left<right)
{
temp=arr[right];
arr[right]=arr[left];
arr[left]=temp;
}
//由前往后找,找到比arr[right]值大的就停止,停止的条件是arr[left]>arr[right]
while(left<right&&arr[right]>=arr[left])left++;
//因为关键值存在于arr[right]中,所以arr[right]和arr[left]交换
if (left<right)
{
temp=arr[right];
arr[right]=arr[left];
arr[left]=temp;
}
}while(right>left);//当right=left时退出循环
if (r -right>1) sort(right+1,r,arr);
if (left-l > 1) sort(l,left-1,arr);
}
}
//插入排序
class Insert
{
public void sort(int arr[])
{
Date d1=new Date();
if (arr.length < 2) return;
int temp=0;
//从第二个开始与第一个比较
for (int i=1;i<arr.length;i++)
{
//第I个值与前面排序好的数分别比较
for(int j=i-1;j>=0;j--)
{
temp=arr[i];
if(arr[i]<arr[j])
{
//比当前值大的数往后移
arr[j+1] =arr[j];
arr[j]=temp;//把第I个值插入到J的位置
break;
}
}
}
Date d2=new Date();
System.out.println("插入排序时间:" + (d2.getTime() - d1.getTime())/1000);
}
}
- JAVA 几种常用排序的实现
- 用Java实现几种常用的排序算法
- 几种常用排序的实现
- java的几种常用的排序
- java 常用的几种排序方式
- java几种常用的排序算法
- Java常用的几种排序算法
- 几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- Java实现的几种排序算法
- java实现排序的几种方法
- 几种基本排序的java实现
- 几种排序算法的Java实现
- 使用JAVA实现几种常用的排序算法,浅谈算法。
- c语言的几种常用排序的实现
- 几种常用排序算法的C语言实现
- 几种常用排序算法的C语言实现
- 常用的几种排序算法详解和实现
- 几种常用排序方法的C#实现
- consistent read--一致性读--Logical read-逻辑读-current read当前读--物理读示例
- 最优化方法在图像处理中的应用【3】
- SilkTest Q&A 1
- HDU 3533 Escape
- IO:使用FileInputStream的简单示例2
- JAVA 几种常用排序的实现
- hdoj 1003
- new live for master degree
- HTC One/M7 电信专版802d升级版,毒蛇工具,网络流量,永久root,加固信号稳定,流畅ROM
- 手机产品设计禁忌
- 解决 “Maximum execution time of 300 seconds exceeded in ...”问题
- HDOJ 3491 - Thieves 裸无向图的最小点权割...
- 静态代码检查工具 cppcheck 的使用
- android ListView详解