#直接上代码
桶排序
public class tongorder
{
public static int[] bucketSort(int[] nums,int maxnum)
{
int[] sorted=new int[maxnum+1];
for(int i=0;i<nums.length;i++)
{
sorted[nums[i]]=nums[i];
}
return sorted;
}
public static void main(String[] args)
{
int[] x= {99,96,94,94,91,91,11,22,35};
int[] sorted=bucketSort(x, 99);
for(int i=0;i<sorted.length;i++)
{
if(sorted[i]>0)
System.out.println(sorted[i]);
}
}
}
归并排序
public class guibingorder {
private static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
private static void printArr(int[] arr) {
for (int anArr : arr) {
System.out.print(anArr + " ");
}
}
private static void mergeSort(int[] arr) {
if (arr == null)
return;
mergeSort(arr, 0, arr.length - 1);
}
private static void mergeSort(int[] arr, int start, int end) {
if (start >= end)
return;
// 找出中间索引
int mid = start + (end - start >> 1);
// 对左边数组进行递归
mergeSort(arr, start, mid);
// 对右边数组进行递归
mergeSort(arr, mid + 1, end);
// 合并
merge(arr, start, mid, end);
}
private static void merge(int[] arr, int start, int mid, int end) {
// 先建立一个临时数组,用于存放排序后的数据
int[] tmpArr = new int[arr.length];
int start1 = start, end1 = mid, start2 = mid + 1, end2 = end;
// 创建一个下标
int pos = start1;
// 缓存左边数组的第一个元素的索引
int tmp = start1;
while (start1 <= end1 && start2 <= end2) {
// 从两个数组中取出最小的放入临时数组
if (arr[start1] <= arr[start2])
tmpArr[pos++] = arr[start1++];
else
tmpArr[pos++] = arr[start2++];
}
// 剩余部分依次放入临时数组,实际上下面两个 while 只会执行其中一个
while (start1 <= end1) {
tmpArr[pos++] = arr[start1++];
}
while (start2 <= end2) {
tmpArr[pos++] = arr[start2++];
}
// 将临时数组中的内容拷贝回原来的数组中
while (tmp <= end) {
arr[tmp] = tmpArr[tmp++];
}
}
public static void main(String[] args) {
int[] arr = {6, 4, 2, 1, 8, 3, 7, 9, 5};
mergeSort(arr);
printArr(arr);
}
}
快速排序
public class QuickSort
{
public static void main(String[] args)
{
int[] arr= {1,2,8,2,4,78,95};
quicksort(arr, 0, arr.length-1);
for(int i=0;i<arr.length;i++)
{
System.out.println(arr[i]);
}
}
public static void quicksort(int[] arr,int left,int right)
{
if(left>right)
{
return;
}
int base=arr[left];
int i=left;
int j=right;
while(i!=j)
{
while(arr[j]>=base&&i<j)
{
j--;
}
while(arr[i]<=base&&i<j)
{
i++;
}
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
arr[left]=arr[i];
arr[i]=base;
quicksort(arr, left, i-1);
quicksort(arr,j+1, right);
}
}
冒泡排序
public class BubbleSort
{
public static void sort(long[] arr)
{
long tmp=0;
for(int i=0;i<arr.length-1;i++)
{
for(int j=arr.length-1;j>i;j--)
{
if(arr[j]<arr[j-1])
{
tmp=arr[j];
arr[j-1]=tmp;
}
}
}
}
}
**选择排休**
public class SelectionOrder
{
public static void sort(long[] arr)
{
int k=0;
long tmp=0;
for(int i=0;i<arr.length;i++)
{
k=i;
for(int j=i;j<arr.length;j++)
{
if(arr[j]<arr[k])
{
k=j;
}
}
tmp=arr[i];
arr[i]=arr[k];
arr[k]=tmp;
}
}
}
public class testSelectOrder
{
public static void main(String[] args) {
long arr[]=new long[5];
arr[0]=1;
arr[1]=12;
arr[2]=12;
arr[3]=15;
arr[4]=23;
System.out.println("[");
for(long num:arr)
{
System.out.println(num+"");
}
System.out.println("]");
System.out.println();
SelectionOrder.sort(arr);
}
}
插入排序
public class InsertSort
1. List item
2. List item
{
public static void sort(long[] arr)
{
long tmp=0;
for(int i=1;i<arr.length;i++)
{
tmp=arr[i];
int j=i;
while(j>0&&arr[j]>tmp)
{
arr[j]=arr[j-1];
j--;
}
arr[j]=tmp;
- List item
}
}
}
注:如要转发请注明出处