数据库实现原理#2(获取第N个值)
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,获取数组中的第N个值,仍使用代码说明,算法参考快速排序的思想,详见代码注释.#include #include #include #include "../pub/pub.h"//tmparr : 待
千家信息网最后更新 2025年01月20日数据库实现原理#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安全错误
数据库的锁怎样保障安全
工作站 管理服务器
oracle数据库目录
中小学生网络安全主题绘画
软件开发方向哪个好
网络安全技术课外笔记
分布式数据库三要素
网易服务器为什么会掉线
一个县的网络安全规划
宁波应用软件开发价格是多少
达梦数据库时间类型转换
数据库概念设计的策略
go数据库怎么用
从事网络安全执法
bcp文件是什么数据库
数据库中的id删除后会刷新
30多台电脑组建局域网服务器
大连腾宇计算机软件开发
抓好网络安全工作的通知
嘉定区进口网络技术开发行业标准
数据库数据显示到前端表格
大话西游2服务器在哪个区
数据库工程师工作要求
上海综合软件开发价格合理
阿里轻量云服务器 香港 新加坡
go查数据库
怎么解读服务器日志
集城深圳网络技术有限公司
华为服务器raid驱动更新
软件开发属于什么征收品目
网络安全常用的加密方法有四种