排序小练习(桶,冒泡,快速)

xiaoxiao2021-02-28  130

import java.util.Scanner; public class Main { static Scanner in =new Scanner(System.in); static final int N=1000; static int k; //桶排序:快速,时间复杂度小,可以用来去重(数量较小时),但是有局限,不能排序小数,不能排序结构体 static void bool_sort(int[] a){ int[] bool=new int[N]; for (int i = 0; i < bool.length; i++) bool[i]=0; for (int i = 0; i <k; i++) { bool[a[i]]++; } for (int i = 0; i < bool.length; i++) { for (int j = 0; j<bool[i]; j++) { System.out.print(i+" "); } } System.out.println(); } //冒泡排序,时间复杂度和初始序列有关 static void bubble_sort(int[] a){ int t=0; boolean flag=true;//用来判断若一趟过程中没有交换则直接退出循环即可 for (int i = 0; i < k&&flag; i++) { for (int j = 0; j <k-i-1; j++) { flag=false; if(a[j]>a[j+1]){ flag=true; t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } for (int i = 0; i < a.length; i++) { System.out.print(a[i]+" "); } System.out.println(); } //选择排序(求解最值得时候一定要记得更新) static void chose_sort(int[] a){ int min=0,pos=0,t=0; for (int i = 0; i <k-1; i++) { min=a[i]; pos=i; for (int j = i; j <k; j++) { if(a[j]<min){ min=a[j]; pos=j; } } //将最小值和最前面一位交换 t=a[pos];a[pos]=a[i];a[i]=t; } for (int i = 0; i < a.length; i++) { System.out.print(a[i]+" "); } System.out.println(); } //快速排序 static void quick_sort(int[] a,int left,int right){ if(left>right)//数组索引出界排除 return; int i,j,t,temp; i=left; j=right; temp=a[left]; while(i!=j){ while(a[j]>=temp&&i<j) j--; while(a[i]<=temp&&i<j) i++; if(i<j){ t=a[j]; a[j]=a[i]; a[i]=t; } } a[left]=a[i]; a[i]=temp; quick_sort(a, left, i-1); quick_sort(a, i+1, right); } public static void main(String[] args) { while(in.hasNext()){ k=in.nextInt(); int[] a=new int[k]; for (int i = 0; i < k; i++) a[i]=in.nextInt(); System.out.println("桶排序:"); bool_sort(a); System.out.println("冒泡排序:"); bubble_sort(a); System.out.println("快速排序:"); quick_sort(a,0,k-1); for (int i = 0; i < a.length; i++) System.out.print(a[i]+" "); System.out.println(); System.out.println("选择排序:"); chose_sort(a); } } }

此处我再附上我写的直接插入排序和归并排序算法的链接:http://blog.csdn.net/jinglelia/article/details/77004542

转载请注明原文地址: https://www.6miu.com/read-24791.html

最新回复(0)