百度面试题-求1到n个数的排序
2015-07-24 08:15
501 查看
题目:有1,2,3,..n 的无序整数数组,求排序算法。要求尽量快
分析:
正常的无序数组用快排是最快的,但是题目中1到n ,肯定有文章可做,先观察一下。
arr [9,8,3,2,5,1,6,7,10,4]
arrcp[1,2,3,4,5,6,7,8,9,10]
规律
arrcp[arr[i]-1]=arr[i];
但是这个空间复杂度还是有的
那么在arr[]数组内部解决不用arrcp[]
用了两个值 p用来记录arr[i]的值,t用来记录arr[p]的值
这样时间和空间复杂度都降到了最低
分析:
正常的无序数组用快排是最快的,但是题目中1到n ,肯定有文章可做,先观察一下。
arr [9,8,3,2,5,1,6,7,10,4]
arrcp[1,2,3,4,5,6,7,8,9,10]
规律
arrcp[arr[i]-1]=arr[i];
但是这个空间复杂度还是有的
那么在arr[]数组内部解决不用arrcp[]
用了两个值 p用来记录arr[i]的值,t用来记录arr[p]的值
这样时间和空间复杂度都降到了最低
void SortOneToN(int arr[],int length) { if (arr==NULL || length<=0) { return ; } int p=arr[0]; for (int i=0;i<length;) { int t=arr[p-1]; if (p==t) { p++; if (p>length-1) { return ; } i++; continue; } arr[p-1]=p; p=t; } }
相关文章推荐
- 【LeetCode-面试算法经典-Java实现】【026-Remove Duplicates from Sorted Array(删除排序数组中的重复元素)】
- 黑马程序员——Java基础——Map集合的学习
- 黑马程序员--基础整理02
- 黑马程序员——学习一维数组的地址
- 黑马程序员——String类和基本数据类型对象包装类
- 【黑马程序员】-----java基础----IO
- 身为java程序员你需要知道的网站(包含书籍,面试题,架构...)
- 黑马程序员_OC Foundation框架简介
- 黑马程序员——JAVA基础------集合框架(四)----Map集合
- 如何面试一个Android开发者
- 码农《二》
- Android面试
- 码农《一》
- 剑指offer-面试题17.合并两个排序的链表
- iOS程序员面试
- 关于PHP程序员解决问题的能力
- 黑马程序员--基础整理01
- 黑马程序员——JAVA基础------集合框架(三)----Iterator
- 【转】常见数字IC设计、FPGA工程师面试题
- 黑马程序员——Java多线程之线程安全问题