91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

數據庫實現原理#2(獲取第N個值)

發布時間:2020-08-13 00:54:19 來源:ITPUB博客 閱讀:168 作者:husthxd 欄目:關系型數據庫

獲取數組中的第N個值,仍使用代碼說明,算法參考快速排序的思想,詳見代碼注釋.


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#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 ----------
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

苏州市| 光山县| 邵阳市| 北辰区| 瓦房店市| 江北区| 东城区| 金沙县| 濮阳市| 鞍山市| 阿拉尔市| 西和县| 胶州市| 石林| 龙口市| 清镇市| 元朗区| 义马市| 潼关县| 桦南县| 平阴县| 宁乡县| 定安县| 五家渠市| 延吉市| 福建省| 阿合奇县| 和田县| 工布江达县| 科技| 边坝县| 万盛区| 云霄县| 会东县| 安阳县| 巴彦淖尔市| 游戏| 封丘县| 丰台区| 鄢陵县| 宜川县|