数据库实现原理#2(获取第N个值)
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,获取数组中的第N个值,仍使用代码说明,算法参考快速排序的思想,详见代码注释.#include #include #include #include "../pub/pub.h"//tmparr : 待
千家信息网最后更新 2025年11月07日数据库实现原理#2(获取第N个值)
获取数组中的第N个值,仍使用代码说明,算法参考快速排序的思想,详见代码注释.
#include #include #include #include "../pub/pub.h"//tmparr : 待处理的数组//counter : 数组元素个数//n : 从小到大排列,第n个数字(从0开始计数)static int quicksort_nth_recursion(int tmparr[],int counter,int n){ //DEBUG : 数组信息 //print_array(tmparr,counter); //任意取一个值,找到该值的位置 int pos = 0; int randompos = rand() % counter; //把选定的值移到第一个位置 swap(tmparr,0,randompos); for(int i=1;i < counter;i++) { //从1开始遍历,如遍历的元素小于选定的值,则把pos加一并吧该值移到pos所在的位置 //循环完成后,小于随机选择值的数会在pos的左边,大于等于选择值的在pos的右边 if(tmparr[i] < tmparr[0]) { //如果遍历 swap(tmparr,++pos,i); } } //printf("value = %d,counter = %d,target = %d,pos = %d\n",tmparr[0],counter,n,pos); //把选定的值移到它该在的地方 swap(tmparr,pos,0); if(pos == n) return tmparr[pos]; //递归处理 if(pos < n)//在右边的数组中 quicksort_nth_recursion(tmparr+(pos+1),counter-(pos+1),n-(pos+1)); else//在左边的数组中 quicksort_nth_recursion(tmparr,pos,n);}void main(void){ //参数:第1个/中间/最后一个 int pos[3] = {1,0,0}; int result = 0,counter = 0; int arr[] = {4,10,25,100,53,103,50,40,77,9,5,1,65,19,60,51,500}; counter = sizeof(arr)/sizeof(int); pos[1] = (counter+1)/2;//中位数 pos[2] = counter;//最大值 for(int i = 0;i < 3;i++) { result = quicksort_nth_recursion(arr,counter,pos[i]-1); printf("---------- The No.%d result is %d ----------\n",pos[i],result); } printf("------------------------------------------------------------\n"); int arr2[1<<16]; srand(38838); for(int i=0;i < 1<<16;i++) { arr2[i] = rand(); } counter = sizeof(arr2)/sizeof(int); pos[1] = (counter+1)/2; pos[2] = counter; for(int i = 0;i < 3;i++) { result = quicksort_nth_recursion(arr2,counter,pos[i]-1); printf("---------- The No.%d result is %d ----------\n",pos[i],result); }} 运行输出
helloworld@DESKTOP-BRAEUTR /d/yunpan/Work/Z-SRC/sort$ /d/tmp/test.exe---------- The No.1 result is 1 -------------------- The No.9 result is 50 -------------------- The No.17 result is 500 -------------------------------------------------------------------------------- The No.1 result is 0 -------------------- The No.32768 result is 16541 -------------------- The No.65536 result is 32767 ----------
数组
位置
代码
元素
右边
处理
选择
最大
从小到大
个数
中位数
从小
信息
参数
地方
思想
所在
数字
最大值
注释
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
随着手机网络技术技术的发展
服务器内网和外网哪个好
温州应用软件开发定做价格
国外图片服务器
单台服务器qps
高级配送系统数据库设计
软件开发现状如何
怎么打包数据库
江苏计算机软件开发价钱
高速上到服务器突然变黄码
周村crm管理软件开发公司
魔力 无法读取服务器列表
丰县职业技术学校计算机网络技术
vr软件开发现实虚拟技术
运营自己的app需要服务器
太空狼人杀显示服务器已满
腾讯服务器哪里找
内浪潮服务器内蒙古
广东综合软件开发销售价格
网络安全警示语英文
网络安全和信息化部队
剪影调色软件开发
数据库的多表查询实验原理
3d绘图软件开发
网络安全实施工程师简历
我的世界免费模组服务器
支持网络安全技术的研究
互联网金融与金融科技相同点
出租车专车拼车软件开发
游戏网站建设软件开发