几种常见排序,冒泡排序,桶排序,快速排序,java版

桶排序

import java.util.Scanner;
public class _桶排序bukcetSort { //bukcetSort
	static int[] a = new int[11];//创建一个定长数组
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		for(int i = 0; i < n; i++) { //循环输入数
			int t = sc.nextInt();
			a[t]++; //如果输入的数为 t 那么对应的 a[t]就加1
		}
		for(int i = 0; i < a.length; i++) {//循环数组
			for(int j = 1; j<=a[i]; j++) { // a[i]=几 就输入几次 i
				System.out.print(i+" "); 
			}
		}                                            
	}
	
}

冒泡排序

import java.util.Scanner;

public class _冒泡排序bubbleSort {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n =sc.nextInt();
		int[] N = new int[n];
		for(int i = 0; i < n; i++) {
			N[i] = sc.nextInt();
		}
		N = bubbleSort(N); 
		for(int i = 0; i < n; i++) {
			System.out.print(N[i]+" ");
		}
		
	}
	public static int[] bubbleSort(int[] N) {
		for(int i = 0; i < N.length-1; i++) { 
			// n 个数需要比较 n-1次,每轮比较得出最小的一个数排在数组末尾
			for(int j = 0; j < N.length-i-1; j++) { 
				if(N[j]<N[j+1]) { //每个数与后面相邻的数进行比较,成立交换位置
					int t = N[j];
					N[j] = N[j+1];
					N[j+1] = t;
				}
			}
		}
		
		return N;
	}
}

快速排序

import java.util.Scanner;

public class _快速排序quicksort {
	static int[] n;
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		n = new int[N];
		for(int i = 0; i < n.length; i++) {
			n[i] = sc.nextInt();
		}
		quicksort(0,N-1);
		for(int i = 0; i < N; i++) {
			System.out.print(n[i]+" ");
		}
	}
	public static void quicksort(int left , int right) { 
		//首次输入数组首个数 和最后一个数的下标
		if(left>right) { //递归 的出口, 如果 首位大于末位 结束递归
			return;
		}
		
		int temp = n[left];  //先以第一个数为基准数 进行比较
		int i = left;  
		int j = right;

		while(i!=j) {
			//注意: 要先从右边找 找到右边比 基准数小的数停止
	
			while(n[j]>=temp&&i<j) {
				j--;
			}
			// 左边同理
			while(n[j]<=temp&&i<j) {
				i++;
			}
			//然后交换 两个数的位置
			if(i<j) {
				int t = n[j];
				n[i] = n[j];
				n[j] = t;
			}
		}
		
		n[left] = n[i]; //最后 当 i=j时  将 基准数与 n[i] 交换位置
		n[i] = temp;
		quicksort(left,i-1); //进行递归   基准数 现在所在位置前边的数的排序
		quicksort(i+1,right); // 后边的
	}
}
/*
  	10
	6 1 2 7 9 3 4 5 10 8
	
	
	排序过程:
	*6 1 2 7 9 3 4 5 10 8
	3 1 2 5 4 *6 9 7 10 8
	2 1 *3 5 4 6 9 7 10 8
	1 *2 3 5 4 6 9 7 10 8
	*1 2 3 5 4 6 9 7 10 8
	1 2 3 4 *5 6 9 7 10 8
	1 2 3 *4 5 6 9 7 10 8
	1 2 3 4 5 6 8 7 *9 10
	1 2 3 4 5 6 7 *8 9 10
	1 2 3 4 5 6 *7 8 9 10
	1 2 3 4 5 6 7 8 9 *10 
  
 */

	

发布了28 篇原创文章 · 获赞 1 · 访问量 590

猜你喜欢

转载自blog.csdn.net/qq_41911729/article/details/103395753