今日面试被问到排序问题,发现自己的不足,特来查漏补缺:
首先是各大排序算法的总结表
排序算法 | 平均时间复杂度 | 最好情况 | 最坏情况 | 空间复杂度 | 稳定性 |
冒泡排序 | Ο(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 }
原文地址:https://www.cnblogs.com/10081-AA/p/10719673.html
时间: 2024-10-10 15:10:47