本文主要是介绍头歌资源库(12)找第K小数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、 问题描述
二、算法思想
可以使用快速排序算法来解决这个问题。
首先,选择一个基准元素,通常选择序列的第一个元素。
然后,将序列中小于等于基准元素的元素放在基准元素的左边,大于基准元素的元素放在基准元素的右边。
接着,递归地对左右两个子序列进行快速排序。
最后,当子序列的长度小于等于K时,返回第K个元素。
三、代码实现
#include<stdio.h>
int Part(int a[],int low,int high)
{int povit=a[low];while(low<high){while(low<high && a[high]>=povit){high--;}a[low]=a[high];while(low<high && a[low]<povit){low++;}a[high]=a[low];}a[low]=povit;return low;
}
void quicksort(int a[],int low,int high)
{if(low<high){int povitpos=Part(a,low,high);quicksort(a,low,povitpos-1);quicksort(a,povitpos+1,high);}
}
int main()
{int N,K;scanf("%d %d",&N,&K);int a[50];for(int i=1;i<=N;i++){scanf("%d",&a[i]);}quicksort(a,1,N);printf("%d\n",a[K]);return 0;
}
执行结果
结语
知识改变下限
天赋决定上限
!!!
这篇关于头歌资源库(12)找第K小数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!