剑指Offer------最小的k个数
来源:互联网 发布:c语言心形图案代码下载 编辑:程序博客网 时间:2024/06/03 21:57
题目描述
输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。
<分析>
这就是数组排序算法,但是考察的是时间复杂度
做了两种解法:1.冒泡排序,时间复杂度O(k*n)
2.快速排序,时间复杂度O(nlogn)
import java.util.ArrayList;/** * * @author zy * @date 2017年10月4日 下午11:08:35 * @Decription 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。 */public class Ex19 {public ArrayList<Integer> GetLeastNumbers_Solution(int[] input, int k) {/** * 解法一:冒泡排序,时间复杂度O(k*n) *///ArrayList<Integer> result = new ArrayList<>();//if (k > input.length || k == 0) {//return result;//}//for(int i = 0;i < k;i++){//int tmp = 0;//for (int j = input.length-1; j >i; j--) {//if (input[j]<input[j-1]) {//tmp = input[j];//input[j] = input[j-1];//input[j-1] = tmp;//}//}//result.add(input[i]);//}////return result;/** * 解法二:快速排序 */ArrayList<Integer> result = new ArrayList<>();if (k > input.length || k == 0) {return result;}quickSort(input, 0, input.length-1);for(int i = 0;i<k;i++){result.add(input[i]);}return result;}void quickSort(int[] array,int low,int high){if (low > high) {return;}int i,j,index;i = low ;j = high;index = array[i];//用子表的第一个记录做基准while(i < j){//从子表两端交替向中间做扫描while(i < j && array[j] >= index){j--;}if (i < j) {array[i++] = array[j];//用比基准小的记录替换地位记录}while(i < j && array[i] < index){i++;}if (i < j) {array[j--] = array[i];}}array[i] = index;quickSort(array, low, i-1);quickSort(array, i+1, high);}}
阅读全文
0 0
- 剑指offer:最小的k个数
- 【剑指offer】最小的k个数
- 剑指offer-30:最小的k个数
- 最小的k个数(剑指offer)
- 剑指offer--最小的K个数
- 剑指Offer之 - 最小的k个数
- 剑指offer-30 最小的K个数
- 剑指offer之最小的k个数
- 剑指offer 30 - 最小的k个数
- 《剑指offer》最小的K个数
- 【剑指Offer】最小的K个数
- 剑指offer—最小的K个数
- 剑指Offer-30-最小的k个数
- 剑指offer:最小的K个数
- 【剑指offer】之最小的k个数
- [剑指offer:30]最小的k个数
- 剑指offer 29 最小的k个数
- 剑指offer 最小的K个数
- Leetcode之Longest Substring Without Repeating Characters 问题
- zookeeper3.4.10安装与配置
- 2018 安卓
- 善恶报应
- kvm虚拟化基础:运行级别
- 剑指Offer------最小的k个数
- android传输层tcp套接字通信
- 计蒜客 folding
- 【089】深度学习读书笔记:P29证明迹Tr(AB)=Tr(BA)
- android学习---使用Handler
- MySQL主从复制
- 离线赛20171004总结
- R学习:用REmap生成我们自己的迁徙地图
- 漫话中文自动分词和语义识别