寻找数组中的第i大的元素
来源:互联网 发布:阿尔德里奇身体数据 编辑:程序博客网 时间:2024/05/22 02:13
#include<iostream>
#include<cmath>
using namespace std;
void fileArray(int array[], int len){
for(int i=0;i<len;i++){
array[i]=rand()%100;
}
}
void printArray(int array[], int len){
for(int i=0;i<len;i++){
cout<<array[i]<<" ";
if((i+1)%10 == 0){
cout<<endl;
}
}
}
int partition(int array[], int low, int high){
int key=array[high];
int i=low-1;
for(int j=low;j<=high;j++){
if(array[j]<key){
i++;
int temp=array[i];
array[i]=array[j];
array[j]=temp;
}
}
int temp=array[i+1];
array[i+1]=array[high];
array[high]=temp;
return (i+1);
}
void quickSort(int array[], int low, int high){
if(low<high){
int mid=partition(array,low,high);
quickSort(array,low,mid-1);
quickSort(array,mid+1,high);
}
}
int findIthElement(int array[], int low, int high, int i){
if(low == high){
return array[low];
}
int mid=partition(array,low,high);
int num=mid-low+1;
if(i == num){
return array[mid];
}else if(i<num){
return findIthElement(array,low,mid-1,i);
}else{
return findIthElement(array,mid+1,high,i-num);
}
}
int main(){
const int size=1000;
int array[size];
fileArray(array,size);
printArray(array,size);
int i=3;
int ithElement=findIthElement(array,0,size-1,i);
quickSort(array,0,size-1);
printArray(array,size);
cout<<"The "<<i<<"th Element is:"<<ithElement<<endl;
return 0;
}
#include<cmath>
using namespace std;
void fileArray(int array[], int len){
for(int i=0;i<len;i++){
array[i]=rand()%100;
}
}
void printArray(int array[], int len){
for(int i=0;i<len;i++){
cout<<array[i]<<" ";
if((i+1)%10 == 0){
cout<<endl;
}
}
}
int partition(int array[], int low, int high){
int key=array[high];
int i=low-1;
for(int j=low;j<=high;j++){
if(array[j]<key){
i++;
int temp=array[i];
array[i]=array[j];
array[j]=temp;
}
}
int temp=array[i+1];
array[i+1]=array[high];
array[high]=temp;
return (i+1);
}
void quickSort(int array[], int low, int high){
if(low<high){
int mid=partition(array,low,high);
quickSort(array,low,mid-1);
quickSort(array,mid+1,high);
}
}
int findIthElement(int array[], int low, int high, int i){
if(low == high){
return array[low];
}
int mid=partition(array,low,high);
int num=mid-low+1;
if(i == num){
return array[mid];
}else if(i<num){
return findIthElement(array,low,mid-1,i);
}else{
return findIthElement(array,mid+1,high,i-num);
}
}
int main(){
const int size=1000;
int array[size];
fileArray(array,size);
printArray(array,size);
int i=3;
int ithElement=findIthElement(array,0,size-1,i);
quickSort(array,0,size-1);
printArray(array,size);
cout<<"The "<<i<<"th Element is:"<<ithElement<<endl;
return 0;
}
0 0
- 寻找数组中的第i大的元素
- 寻找数组中的第i小元素
- 寻找数组中的第K大的元素&找数组中重复数字
- 寻找数组中的第k小的元素
- 随机访问数组中第i大的元素
- 寻找第n大的元素
- 寻找数组第k大的值
- 找出数组中的第K大的元素
- 数组中的第K大元素
- 寻找数组中的主要元素
- 寻找数组中的缺失元素
- 寻找数组中的主元素
- 寻找一个序列中第n大的元素
- 寻找数组中第i小的数(C++)
- 第k大(小)数,寻找最小的k个数(进一步要求顺序与原数组中元素顺序一致)
- 数组中第K大的元素
- 寻找第k小的元素或者第k大的元素 -- O(n)
- 在O(n)时间内找到数组中的第i小的元素
- 视图控制器
- C#人事管理系统开发(2)数据库设计
- ffmpeg 常用 命令随手记
- goagent 403\404 error 解决 (20141117新增v3.2.2正式版)
- 匈牙利算法的DFS作法
- 寻找数组中的第i大的元素
- win8.1开发之旅(一):我看windows应用
- 自定义ios7标题栏和状态栏
- 整数加复数,复数加整数,
- 冒泡排序笔记
- POJ 2369 Permutations
- maven学习地址
- 寻找最大元和最小选
- Ubuntu中root用户和user用户的相互切换