博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java-冒泡排序、快速排序、插入排序、快速排序
阅读量:6085 次
发布时间:2019-06-20

本文共 1538 字,大约阅读时间需要 5 分钟。

/**
 * 功能演示各种排序法
 * 1:冒泡排序 Bubble
 * 2:快速排序 Select
 * 3:插入排序 InsertSort
 * 4:快速排序 QuickSotrt
 * 引用: 类中形参变量当做应用的时候形参不能是普通类型,形参必须是复合类型,比如说数组就可以
 */
//1:插入排序
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;
}
}
}
//2:选择排序法
class Select
{
//选择快排序
int temp=0;
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;
}
}
}
//3:冒泡排序法
class Bubble
{
public void test(int a)
{
a++;
}
public void sort(int arr[])
{
int temp=0;
//i是决定走几趟, 冒泡排序
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;
}
}
}
}
}
//4:快速排序
class QuickSort
{
public void sort(int [] a, int low, int high )
{
int pos;
if (low<high)
{
pos = FindPos(a, low, high);
sort(a, low, pos-1);
sort(a, pos+1, high);
}
}
public int FindPos(int [] a, int low, int high)
{
int val = a[low];
while (low<high)
{
while (low<high && a[high]>=val)
--high;
a[low] = a[high];
while (low<high && a[low]<=val)
++low;
a[high] = a[low];
}
a[low] = val;
return low;
}
}

转载于:https://www.cnblogs.com/toge/p/6114704.html

你可能感兴趣的文章
onix-文件系统
查看>>
java.io.Serializable浅析
查看>>
我的友情链接
查看>>
多线程之线程池任务管理通用模板
查看>>
CSS3让长单词与URL地址自动换行——word-wrap属性
查看>>
CodeForces 580B Kefa and Company
查看>>
开发规范浅谈
查看>>
Spark Streaming揭秘 Day29 深入理解Spark2.x中的Structured Streaming
查看>>
鼠标增强软件StrokeIt使用方法
查看>>
本地连接linux虚拟机的方法
查看>>
某公司面试java试题之【二】,看看吧,说不定就是你将要做的题
查看>>
BABOK - 企业分析(Enterprise Analysis)概要
查看>>
Linux 配置vnc,开启linux远程桌面
查看>>
CentOS6.4关闭触控板
查看>>
React Native 极光推送填坑(ios)
查看>>
Terratest:一个用于自动化基础设施测试的开源Go库
查看>>
修改Windows远程终端默认端口,让服务器更安全
查看>>
扩展器必须,SAS 2.0未必(SAS挺进中端存储系统之三)
查看>>
Eclipse遇到Initializing Java Tooling解决办法
查看>>
while((ch = getchar()) != '\n')
查看>>