• 选择 冒泡 快速 插入排序


    /**
    * 演示各种排序法
    */
    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;

    }
    }
    }
    }
    }

  • 相关阅读:
    Browsersync 浏览器自动刷新
    react学习历程问题记载(二)
    react学习历程问题记载(一)
    LessJs笔记
    toFixed的使用
    react+ts封装AntdUI的日期选择框之月份选择器DatePicker.month
    elementUI实现日期框选中项文本高亮
    react+lib-flexible适配浏览器宽度配置
    vue+lib-flexible实现大小屏幕,超大屏幕的适配展示。
    div+伪元素实现太极图
  • 原文地址:https://www.cnblogs.com/fengxiaolan/p/5886614.html
Copyright © 2020-2023  润新知