各种排序的代码,自己理解,我的理解写在了笔记本上了
public class Paixu {
public static void main(String[] args) {
// TODO 自动生成的方法存根
int a[]={10,8,6,4,2};
sort(a);
for(int i : a)
{
System.out.println("冒泡排序是:"+i);
}
int b[]={10,8,6,4,2};
sort2(b);
for(int i :b)
{
System.out.println("选择排序是:"+i);
}
int c[]={10,8,6,4,2};
sort3(c);
for(int i :c)
{
System.out.println("插入排序是:"+i);
}
int d[]={10,8,6,4,2};
sort4(d,0,4);
for(int i :d)
{
System.out.println("快速排序是:"+i);
}
}
//冒泡排序
static void sort (int a[])
{
int temp = 0;
for(int i=0;i<a.length-1;i++)
{
for(int j=0;j<a.length-i-1;j++)
{
if(a[j]>a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
}
//选择排序法
static void sort2 (int a[])
{
int temp =0;
for(int i=0;i<a.length-1;i++)
{
for(int j=i+1;j<a.length;j++)
{
if(a[i]>a[j])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
//插入排序法
static void sort3(int a[])
{
for(int i=1;i<a.length;i++)
{
int insertIndex =i-1;
int inser= a[i];
while(insertIndex>=0&&a[insertIndex]>inser)
{
a[insertIndex+1] = a[insertIndex];
insertIndex--;
}
a[insertIndex+1] =inser;
}
}
//快速排序法
static void sort4(int a[],int lift,int right)
{
int l = lift;
int r = right;
int temp = 0;
int middle = a[(l+r)/2];
while(l<r){
while(a[l]<middle){
l++;
}
while(a[r]>middle){
r--;
}
if(l>=r) break;
temp = a[l];
a[l] = a[r];
a[r] = temp;
if(a[l]==middle){
r--;
}
if(a[r]==middle){
l++;
}
}
if(l==r){
l++;
r--;
}
if(lift<r){
sort4(a,lift,r);
}
if(right>l){
sort4(a,l,right);
}
}
}