选择 冒泡 快速 插入排序
Posted 小兰
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了选择 冒泡 快速 插入排序相关的知识,希望对你有一定的参考价值。
/**
* 演示各种排序法
*/
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;
}
}
}
}
}
以上是关于选择 冒泡 快速 插入排序的主要内容,如果未能解决你的问题,请参考以下文章
js冒泡排序法——选择排序(other)——计数排序(桶排序)——快速排序——插入排序-更新
Python八大算法的实现,插入排序希尔排序冒泡排序快速排序直接选择排序堆排序归并排序基数排序。
插入排序(直接插入排序希尔排序);交换排序(冒泡排序快速排序);选择排序(简单选择排序堆排序);归并排序和基数排序;基于关键词比较的排序算法下界分析