找到一个乱序数组排序后某一特定数值首次和末次出现的位置
来源:互联网 发布:上海编程培训班 编辑:程序博客网 时间:2024/04/30 15:30
不多说,上代码,我的思路是利用快速排序,进行数组排序,而后利用二分查找方法,进行快速定位
int intArray[]={12,451,0,5,45,15,78,23,54,76,451};void QuickSort(int* a,int low,int high){if(NULL==a){return;}if(low>=high){return ;}int first=low,last=high;int key=a[low];while(first<last){while(first<last&&key<=a[last]){last--;}a[first]=a[last];while(first<last&&key>=a[first]){first++;}a[last]=a[first];}a[first]=key;QuickSort(a,low,first-1);QuickSort(a,first+1,high);}int getFirstPos(int*a,int value,int length){ if(NULL==a) return; int low=0,high=length-1;int mid=(low+high)/2;int nPos=-1;while(low<=high){mid=(low+high)/2;if(value<a[mid]){high=mid-1;}else if(value==a[mid]){nPos=mid;high=mid-1;}else{low=mid+1;}}return nPos;}int getLastPos(int*a,int value,int length){ if(NULL==a) return; int low=0,high=length-1;int mid=(low+high)/2;int nPos=-1;while(low<=high){mid=(low+high)/2;if(value<a[mid]){high=mid-1;}else if(value==a[mid]){nPos=mid;low=mid+1;}else{low=mid+1;}}return nPos;}int main(){QuickSort(intArray,0,10);cout<<451<<"第一次出现的位置是:"<<getFirstPos(intArray,451,11)<<endl;cout<<451<<"最后一次出现的位置是:"<<getLastPos(intArray,451,11)<<endl;}
经测试结果正确
0 0
- 找到一个乱序数组排序后某一特定数值首次和末次出现的位置
- 在乱序数组中寻找特定出现次数的数字——异或运算
- 给定一个乱序数组,找到其中第K大的值,要求时间复杂度最低
- 返回末次出现c的位置的前面字符串
- 乱序数组和随机数
- 乱序数组的算法
- 求一个乱序数组的元素最大连续长度
- 不完全乱序数组重排序。
- java-顺序和乱序数组的二分搜索
- C#乱序数组的简单方法
- 有序的数组中找到某一目标值首次出现的下标
- [LeetCode(Q41)] First Missing Positive (乱序数组中寻找第一个未出现的正整数)
- 查找一个有序数组中某一数值出现的次数
- 实现只有0,1,2三种元素的乱序数组的排序
- 实现只有0,1,2三种元素的乱序数组的排序
- 利用快速排序的思想寻找乱序数组第k大数
- 分治法:求解一个乱序数组中距离最近的两个数
- Smarty foreach 循环次数 首次 末次
- 使用spring quartz实现定时任务
- GRE写作必备句型
- Sun's XACML下载
- 2012年5月SAT香港真题解析
- first step, first careful
- 找到一个乱序数组排序后某一特定数值首次和末次出现的位置
- Leetcode_98Validate Binary Search Tree
- day02
- Android Bitmap 倒影
- Unity 中服务端与客户端的的代码Demo
- 利用/dev/mem实现用户空间驱动
- 首周任务 :asp留言板
- Linux环境 pip install PIL失败
- 车载导航系统中GPS的定位