今日面试被问到排序问题,发现自己的不足,特来查漏补缺:

首先是各大排序算法的总结表

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。 排序算法大合集 
排序算法 平均时间复杂度 最好情况 最坏情况 空间复杂度 稳定性
冒泡排序 Ο(n2) Ο(n) Ο(n2) Ο(1)  稳定
选择排序 Ο(n2) Ο(n2) Ο(n2) Ο(1)  不稳定
插入排序 Ο(n2) Ο(n) Ο(n2) Ο(1)  稳定
希尔排序 Ο(nlogn) Ο(nlog2n) Ο(nlog2n) Ο(1)  不稳定
归并排序 Ο(nlogn) Ο(nlogn) Ο(nlogn) Ο(n) 稳定 
快速排序 Ο(nlogn) Ο(nlogn) Ο(n2) Ο(logn) 不稳定 
堆排序 Ο(nlogn) Ο(nlogn) Ο(nlogn) Ο(1) 不稳定 
计数排序 Ο(n+k) Ο(n+k) Ο(n+k) Ο(k) 稳定 
桶排序 Ο(n+k) Ο(n+k) Ο(n2) Ο(n+k) 稳定 
基数排序 Ο(n*k) Ο(n*k) Ο(n*k) Ο(n+k) 稳定 

 

首先用自己最近实战的java语言来进行一个排序问题编程:

问题:对输入的n个数排序并输出

输入:两行,第一行为n;第二行为需要进行排序的n个数

输出:一行,即排序后的数

 1 import java.util.Scanner;
 2 import java.util.Arrays;
 3 public class Main{
 4     public static void main(String [] args){
 5         Scanner in = new Scanner(System.in);
 6         while(in.hasNext()){
 7              int n = in.nextInt();
 8              int[] arr = new int[n];
 9              for(int i = 0;i<n;i++){
10                  arr[i] = in.nextInt();
11              }
12              Arrays.sort(arr);
13              for(int i = 0;i<n;i++)
14                  System.out.print(arr[i]+" ");
15               System.out.println();
16               }
17         }
18 }

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄