大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 職業(yè)指南 最大系數(shù)難題,桶排序面試題

最大系數(shù)難題,桶排序面試題

更新時間:2023-01-30 16:11:46 來源:動力節(jié)點 瀏覽1542次

給定一個數(shù)組,求如果排序之后,相鄰兩數(shù)的最大差值,要求時間復(fù)雜度0(N)

且要求不能用非基于比較的排序

那么這道題就借用了桶排序的概念

#include <stdio.h>
#include <stdbool.h>
int compare_min(int ,int );  //找到最小值 
int compare_max(int ,int );  //找到最大值 
int main ()
{
 int zippo[]={85,41,326,485};
 int n=sizeof(zippo)/sizeof(zippo[0]);
 int w=n+1;
 int min=zippo[0];
 int max=zippo[0];
 for(int i=0;i<n;i++)
 {
  min=compare_min(min,zippo[i]);
  max=compare_max(max,zippo[i]);  
 }
 int group=n+1;              //把組數(shù)設(shè)成整個數(shù)組中元素的個數(shù)再+1 
 int bigcha=max-min+1;      //最大值和最小值的差 
 float try_count=bigcha/group;   //想確定每一組中到底要幾個數(shù),當(dāng)然了,又可能算出來的是小數(shù) 
 int count;
 
 
 if(try_count==(int)try_count)  //如果是小數(shù)那么就取整后+1 
  count=try_count;
 else
  count=try_count+1;
 
         //萬事俱備,只差三個數(shù)組  
 bool tong_1 [w]={};        //bool類型的數(shù)組,沒有初始化之前都是0,用來判斷是否為空桶 
 int  tong_min [w]={};   //如果不是空桶,那么記下這個桶的最大值、最小值就好 
 int tong_max [w]={};   //3個數(shù)組,縱觀為一組,記錄了一個桶的狀態(tài) 
 for(int i=0;i<n;i++)
 {
  int p=(zippo[i]-min)/count; //這一行求的是:數(shù)組里的數(shù)到底應(yīng)該進(jìn)入哪個桶 
  if(tong_1[p]==0)
  {
   tong_min[p]=zippo[i];    //只要有一個數(shù)進(jìn)桶,最大值、最小值都是它 
   tong_max[p]=zippo[i];
   tong_1[p]=1;
  }
  else
  {
   if(zippo[i]<tong_min[p])
    tong_min[p]=zippo[p];
   if(zippo[i]>tong_max[p])
    tong_max[p]=zippo[i];
  }
 }
 int m=0;
 for(int i=1;i<=(n+1);i++)
 {
  if(tong_1[i]==1)
  {
   for(int j=i-1;j>=0;j--)
   {
    if(tong_1[j]==1)
    {
     m=(tong_min[i]-tong_max[j]) > m ? (tong_min[i]-tong_max[j]): m ;
     break;
    }
   }
   for(int k=i+1;k<=(n+1);k++)
   {
    if(tong_1[k]==1)
    {
     m=(tong_min[k]-tong_max[i]) > m ? (tong_min[k]-tong_max[i]) : m ;
     break;
    }
    
   }
  }
 }
 printf("%d",m);
 return 0;
} 
int compare_min(int min,int a)
{
 if(min>a)
  return a;
 else 
  return min;
}
int compare_max(int max,int a)
{
 if(max<a)
  return a;
 else
  return max;
}

所以,桶的信息都記錄好了之后就可以比較了

但是,比較的基準(zhǔn)是非空桶與前后非空桶的比較,而非空桶與前后非空桶的比較

這是為什么呢?

我們把桶數(shù)設(shè)成比數(shù)組的元素個數(shù)多一的原因,就是要保障至少有一個空桶,但是這個空桶的存在只是為了

排除題中所求是一個桶中的最大值和最小值之差

那么,以空桶為基準(zhǔn)可不可以呢?當(dāng)然不行,這邊呢,有一個我自己手工畫的圖,肯定不好看,但是能看懂。。

桶排序面試題

假設(shè):第一個桶只在21–30之間有30一個數(shù),這種假設(shè)以此類推,那么我們會發(fā)現(xiàn)第三個桶和第一個桶差12,第三個桶和第四個桶之間差18

所以呢,由此即可證明,應(yīng)該以非空桶為基準(zhǔn),以其最大值和后面非空桶的最小值比較,以其最小值和前面非空桶的最大值作比較

以上就是“最大系數(shù)難題,桶排序面試題”,你能回答上來嗎?如果想要了解更多的Java面試題相關(guān)內(nèi)容,可以關(guān)注動力節(jié)點Java官網(wǎng)。

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 国产精品成人一区二区 | 久久青草免费91线频观看不卡 | 99日精品欧美国产 | 国产免费自拍视频 | 视频精品一区二区三区 | 手机福利片 | 国产梦呦精品 | 欧美一区二区精品 | julia中文在线 | 伊人久久一本大道 | 美国毛片一级视频在线aa | 欧美性视频在线激情 | 国产精品视频免费一区二区三区 | 久久草在线观看视频 | 色日韩在线 | 亚洲在线观看 | 四虎影院在线看 | 手机看片日韩日韩 | 国内精品久久久久久网站 | 欧美社区 | 久久精品亚洲欧美日韩久久 | 欧美精品在线一区 | 性欧美视频在线观看 | 毛片免费在线视频 | 国产精片 | www.天天操| 亚洲国产成人久久综合一 | 麻豆一区二区三区四区 | 欧美一区二区在线视频 | 大学生一级毛片免费看真人 | 另类久久 | 九九99香蕉在线视频免费 | 国产精品久久久久影院免费 | 国产第一区二区三区在线观看 | 亚洲精品久久久久午夜福 | 日本一本二本免费播放视频 | 色婷婷91 | 国产成人综合一区人人 | 一区二区三区在线播放视频 | 日本一区二区成人教育 | 亚洲一区中文字幕在线观看 |