zoukankan      html  css  js  c++  java
  • 选择 冒泡 快速 插入排序

    /**
    * 演示各种排序法
    */
    package com.test1;
    import java.util.*;
    public class Demo5_3 {
    public static void main(String[] args) {
    // TODO Auto-generated method stub

    int len=8;
    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 arr[]={1,6,0,-1,9,4,34,2};
    //创建一个bubble类
    //Bubble bubble=new Bubble();
    //bubble.sort(arr);

    //创建一个select类
    //Select select=new Select();
    Bubble bubble=new Bubble();
    QuickSort qs=new QuickSort();

    //在排序前打印系统时间
    Calendar cal=Calendar.getInstance();
    System.out.println("排序前"+cal.getTime());
    //bubble.sort(arr1);
    qs.sort(0, arr1.length-1, arr1);
    //重新得到实例
    cal=Calendar.getInstance();
    System.out.println("排序后"+cal.getTime());

    InsertSort insertsort=new InsertSort();
    insertsort.sort(arr);

    //输出排序后的结果
    for(int i=0;i<arr1.length;i++)
    {
    System.out.print(arr1[i]+" ");
    }
    }

    }

    //快速排序
    class QuickSort{

    public void sort(int left,int right,int array[]){
    int l=left;
    int r=right;
    int pivot=array[(left+right)/2];
    int temp=0;

    while(l<r){
    while(array[l]<pivot) l++;
    while(array[r]>pivot) r--;

    if(l>=r) break;

    temp=array[l];
    array[l]=array[r];
    array[r]=temp;

    if(array[l]==pivot) --r;
    if(array[r]==pivot) ++l;

    }
    if(l==r)
    {
    l++;
    r--;
    }
    if(left<r) sort(left,r,array);
    if(right>l) sort(l,right,array);
    }
    }

    //插入排序
    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--;
    }
    //将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 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;

    }
    }
    }
    }
    }

  • 相关阅读:
    Javascript绝句欣赏
    JAVA应用程序单独集成Mybatis使用Demo
    [转]文件上传原理:Web上传文件的原理及实现
    聚类算法之DBScan(Java实现)[转]
    [转]常见hash算法的原理
    [转]谈工程师的价值和发展
    [转]阿里巴巴离职DBA职业生涯总结
    [转]RandomAccessFile
    使用Cxf发布Webservice服务,如果待发布的接口中有重载方法,怎么处理??[转]
    execute、executeUpdate、executeQuery三者的区别
  • 原文地址:https://www.cnblogs.com/fengxiaolan/p/5886614.html
Copyright © 2011-2022 走看看