Java bucket sort handwritten data structures, merge sort, quick sort, bubble sort, insertion sort and selection sort

Directly on the code #

Bucket sort

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]);
		}	
	}
}   

Merge sort

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);
    }
}  

Quick Sort

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);
	}
}  

Bubble Sort

	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);
	}
}

Insertion Sort

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

					
		}
	}
}

Note: If you want to forward please indicate the source

Guess you like

Origin blog.csdn.net/qq_42914703/article/details/92570722