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;
}
}
}
//堆排序
}
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
- Java5种常用排序算法
- 几种常用排序算法
- 八种常用排序算法
- 几种常用排序算法
- 七种常用排序算法
- 几种常用排序算法
- 几种常用排序算法
- 7种常用排序算法
- 【算法】几种常用排序算法
- 常用排序算法--冒泡排序
- 常用排序算法--插入排序
- 常用排序算法--希尔排序
- 常用排序算法--堆排序
- 常用排序算法--归并排序
- 常用排序算法--快速排序
- 常用排序算法--冒泡排序
- 常用排序算法--快速排序
- 常用排序算法-快速排序
- MPchart 使用详解及详细属性( 二)----pieChart(饼状图)
- JavaScript绑定事件的方法[3种]
- VLC播放RTSP视频流(360浏览器可用)
- EventBus的使用
- javaweb学习总结(五)——Servlet开发(一)
- Java5种常用排序算法
- LSM树
- 关于ArcGIS API for Javascript的安装_3.17API与SDK
- 《剑指offer》:[59]对称的二叉树
- Solr - 主/从同步
- 文件和目录属性
- 项目中二级指针的使用
- Jquery的各个Ajax函数,$.get(),$.post(),$.ajax(),$.getJSON()的用法
- [bzoj3572][HNOI2014]世界树