手写java数据结构之桶排序、归并排序、快速排序、冒泡排序、选择排序和插入排序

#直接上代码

桶排序

public class tongorder 
{
	public static int[] bucketSort(int[] nums,int maxnum)
	{
		int[] sorted=new int[maxnum+1];
		for(int i=0;i0)
				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;iright)
		{
			return;
		}
		int base=arr[left];
		int i=left;
		int j=right;
		while(i!=j)
		{
			while(arr[j]>=base&&i

冒泡排序

	public class BubbleSort
	{
		public static void sort(long[] arr) 
		{
			long tmp=0;
			for(int i=0;ii;j--)
				{
					if(arr[j]

插入排序

public class InsertSort 

 1. List item
 2. List item

{
	public static void sort(long[] arr)
	{
		long tmp=0;
		for(int i=1;i0&&arr[j]>tmp)
			{
				arr[j]=arr[j-1];
				j--;
			}
			arr[j]=tmp;

 - List item

					
		}
	}
}

注:如要转发请注明出处

你可能感兴趣的:(数据结婚)