Java5种常用排序算法

来源:互联网 发布:什么是php探针 编辑:程序博客网 时间:2024/06/06 10:50
package com.jjs.sort;


import java.util.Scanner;


public class TestSort {



public static void main(String[] args) {


Scanner input = new Scanner(System.in);
int n = input.nextInt();
int arry[] = new int[n];
for(int i=0; i<n; i++)
{
arry[i] = input.nextInt();
}
//selectSort(arry);
//insertSort(arry);
//bubbleSort(arry);
//quickSort(arry);
shellSort(arry);
for(Integer e:arry)
System.out.print(e+" ");
}
//选择法排序
public static void selectSort(int[] arr)
{
int temp,flag;

for(int i=0; i<arr.length;i++)
{


temp = arr[i];
flag = i;
for(int j=i+1; j<arr.length;j++)
{
if(temp>arr[j])
{
temp = arr[j];
flag = j;
}
}
if(flag != i)
{
arr[flag] = arr[i];
arr[i] = temp;
}

}
}



//插入排序
public static void insertSort(int[] arr)
{

for(int i=1; i<arr.length; i++)
{
int temp = arr[i];
int j = i;
if(temp < arr[j-1])
{
while(j>=1 && temp<arr[j-1])
{
arr[j] = arr[j-1];
j--;
}
arr[j]=temp;
}

}
}

//冒泡排序
public static void bubbleSort(int[] arr)
{
boolean swap = true;
for(int i=1; i<arr.length; i++)
{
swap = false;
for(int j=arr.length-1; j>0; j--)
{
if(arr[j] < arr[j-1])
{
int temp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = temp;
swap = true;
}
}
if(!swap)
break;
}
}

//快速排序
public static void quickSort(int[] arr)
{
sort(arr,0,arr.length-1);
}
public static void sort(int[] arr,int low,int high)
{
int i,j;
int index;
if(low >= high)
return;
i = low;
j = high;
index = arr[i];
while(i < j)
{
while(i<j && arr[j] >= index)
j--;
if(i<j)
arr[i++] = arr[j];
while(i<j && arr[i] < index)
i++;
if(i<j)
arr[j--] = arr[i];

}
arr[i] = index;
sort(arr,low,i-1);
sort(arr,i+1,high);
}

//希尔排序
public static void shellSort(int[] arr)
{
int len = arr.length;
int i,j,h;
int temp;
for(h=len/2;h>0;h=h/2)
{
for(i=h;i<len;i++)
{
temp = arr[i];
for(j=i-h;j>=0;j-=h)
{
if(temp < arr[j])
arr[j+h] = arr[j];
else
break;
}
arr[j+h] = temp;
}
}
}
//堆排序

}









































0 0
原创粉丝点击