找出第k小元素
给定线性序集中n个元素和一个整数k,1≤k≤n,要求找出这n个元素中第k小的元素。设计一个算法,用程序设计语言实现。
算法思想:先对数组中的元素进行排序,然后输出下标为k-1的元素
#include<stdio.h>
#include<stdlib.h>
#include <time.h>
#define MAXSIZE 100
void quicksort(int *arr, int start, int end)
{
if(start<end){
int i=start;
int j=end;
int temp=arr[start];
while(i<j)
{
while(i<j&&arr[j]>=temp)
{
j--;
}
arr[i]=arr[j];
while(i<j&&arr[i]<=temp)
{
i++;
}
arr[j]=arr[i];
}
arr[i]=temp;
quicksort(arr,start,i-1);
quicksort(arr,i+1,end);
}
else
return;
}
int main()
{
int arr[100];
int n,k,i;
scanf("%d",&n);
printf("随机生成%d个数:\n",n);
for(i=0;i<n;i++)
{
arr[i]=rand()%10;
}
for(i=0;i<n;i++)
{
printf("%d ", arr[i]);
}
printf("\n");
printf("快排排序后:");
quicksort(arr, 0, n-1);
for(i=0;i<n;i++)
{
printf("%d ", arr[i]);
}
printf("\n");
printf("输入k值:");
scanf("%d",&k);
printf("第%d小的元素为:%d ", k,arr[k-1]);
return 0;
}