数据库实现原理#2(获取第N个值)
发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,获取数组中的第N个值,仍使用代码说明,算法参考快速排序的思想,详见代码注释.#include #include #include #include "../pub/pub.h"//tmparr : 待
千家信息网最后更新 2024年11月26日数据库实现原理#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安全错误
数据库的锁怎样保障安全
win10指定dhcp服务器
常州华人谷网络技术有限公司
无锡通信网络技术报价
温州火星人网络技术有限公司
绝地求生bp服务器失败
湖南win10服务器租用
服务器管理口共享到网卡
乌克兰变电站网络安全事件
医疗行业软件开发怎么样
如何增强企业的网络安全
计算机网络技术导论考试
mt4云服务器多帐号管理
沈阳互助盘直销软件开发
网络安全黑天鹅
小程序网络安全答题
央视软件开发室
网络技术与安全维护
数据库设置数据有效时间
旗委网络安全与信息化委员会
数据库损坏后可以恢复什么
服务器啊唱的
华为的网络技术发展
软件开发违规转包后果
维护数据与网络安全
qq数据库.7z 密码
网络技术与安全维护
在网络安全中常用的关键技术
南川区一站式软件开发流程代理商
印度服务器市场份额
球队比分数据库