Java-冒泡排序、快速排序、插入排序、快速排序

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值