千家信息网

数据库实现原理#2(获取第N个值)

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,获取数组中的第N个值,仍使用代码说明,算法参考快速排序的思想,详见代码注释.#include #include #include #include "../pub/pub.h"//tmparr : 待
千家信息网最后更新 2026年10月31日数据库实现原理#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安全错误 数据库的锁怎样保障安全 互联网科技公司起名 互联网最新的科技 极限挑战互联网科技 华中科技大学互联网 菲比寻常互联网科技 互联网高科技企业 上海亿帐通互联网科技 顺网科技2021年互联网排名 山东吉时兔互联网科技有限公司 青岛科技大学互联网大赛研究生 成都互联网科技公司工作好不好 互联网保险科技创业 中国互联网公司排名锤子科技 互联网公司高科技产品 江苏苏星互联网科技有限公司 互联网科技资金流入 宇信科技在杭州互联网排第几 互联网界的黑科技 银川新华互联网科技学校是国营吗 陕西彩京云互联网科技有限公司 互联网核心科技是什么 善班互联网科技 杭州互联网科技公司 科技互联网公司logo 山东吉时兔互联网科技有限公司 晓花互联网科技有限公司网址 群盈汇互联网科技有限公司 众安科技工业互联网合作 上海互联网科技公司ppt 云鲸互联网络科技有限公司
0