数据库实现原理#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安全错误
数据库的锁怎样保障安全
数据库安装两套
怀柔区大型软件开发报价
华为服务器最高能达到多少度
机房网络安全设计方案
网络安全法课件下载
mssql数据库服务高占用
社会对网络技术的影响
美国网络技术专业
获取svn 服务器版本
档案局网络安全风险评估报告
我的世界怎么做服务器
软件开发助理发展
数据库sql 经典教材
云服务器需要装安全狗吗
软件开发年末总结
南方电网企业网络安全
微信小程序连接数据库安全吗
wifi6是第几代网络技术
企业管理器改数据库名称
电子政务网络安全的重要性
怎么在关系数据库中储存空间数据
公共网络和家庭网络安全
浙江大学网络安全与控制
网络安全风险指南
服务器日志的命令
酒店管理系统无法连接到数据库
淘宝的服务器多少钱
卫星通信网络技术与管理
软件开发全球业务怎么设置时间
中信银行软件开发中心怎么样