求眾數、排序演算法、二分法
求眾數
給定一個大小為 n 的陣列,找到其中的眾數。眾數是指在陣列中出現次數大於 ⌊ n/2 ⌋
的元素
public int getNum(int[]nums){
Map<Integer,Integer>map = new HashMap<Integer,Integer>HashMap;
for(int num:nums){
Integer count = map.get(num);
if(count==null){
count = 1;
}else{
count++;
}
map.put(num,count);
if(count>nums.length/2){
rutrun num;
}
}
return -999;
}
氣泡排序:相鄰的依次交換
public void sortMP(int[]nums){
int len = nums.length;
for(int i=0;i<len-1;i++){
for(int j=0;j<len-1-i:j++){
if(nums[j]<nums[j+1]){
nums[j]=nums[j]^nums[j+1];
nums[j+1]=nums[j]^nums[j+1];
nums[j]=nums[j]^nums[j+1];
}
}
}
return nums;
}
選擇排序
public void getNum(int[]nums){
for(int i=0;i<nums.length-1;i++){
int k = i;
for(int j=k+1;j<nums.length;j++){
if(nums[j]<nums[k]){
k = j;
}
}
if(k!=i){
nums[i]^=nums[k];
nums[k]^=nums[i];
nums[i]^=nums[k];
}
}
}
二分法:
public static int binarySearch(int[]num,int tag){
int len = num.length;
if(num[0]>tag||num[len-1]<tag){
return -1;
}
int minIndex = 0;
int maxIndex = len-1;
int middleIndex = len/2;
while (minIndex<=maxIndex){ // 判斷時包含等於;
if(num[middleIndex]<tag){
minIndex = middleIndex+1; // 注意此處的+1;
}else if(num[middleIndex]>tag){
maxIndex = middleIndex-1;
}else {
return minIndex;
}
middleIndex = (maxIndex+minIndex)/2;
}
return -1;
}
相關文章
- 演算法題:求眾數演算法
- 【演算法】求眾數-js解法演算法JS
- 演算法:Majority Element(求眾數)演算法
- 優化的求眾數方法 - 摩爾投票演算法(演算法思想+求眾數的三種方法+摩爾投票演算法改進版求眾數 II)優化演算法
- 【演算法】已知必存在眾數,求該眾數 -- Boyer-Moore 投票演算法演算法
- 【演算法解題報告】求眾數演算法
- 演算法面試題彙總_2求眾數演算法面試題
- 【leetcode】求眾數LeetCode
- 歸併排序求逆序數排序
- 排序演算法__計數排序排序演算法
- 排序演算法__基數排序排序演算法
- 找眾數演算法演算法
- c++實現求眾數及其重數C++
- Leetcode刷題——求眾數LeetCode
- 【LeetCode】求眾數(四種方法)LeetCode
- 【演算法】基數排序演算法排序
- 求素數(質數)演算法演算法
- 【20190326】【每天一道演算法題】求眾數(分治演算法)演算法
- 排序演算法-N個正整數排序排序演算法
- Java 演算法-兩個整數相除(二分法)Java演算法
- 分治演算法-眾數問題演算法
- 【演算法練習】(8)眾數演算法
- 演算法之絕對眾數演算法
- 【資料結構與演算法】非比較排序(計數排序、桶排序、基數排序)資料結構演算法排序
- LeetCode169求眾數——分治LeetCode
- JavaScript計數排序演算法JavaScript排序演算法
- 資料結構與演算法——排序演算法-基數排序資料結構演算法排序
- 看動畫學演算法之:排序-基數排序動畫演算法排序
- C#基數排序演算法C#排序演算法
- 演算法系列:計數排序演算法排序
- 每天一道演算法題:求兩個排序陣列的中位數演算法排序陣列
- 經典十大排序演算法(含升序降序,基數排序含負數排序)排序演算法
- LeetCode每日一題:求眾數(No.169)LeetCode每日一題
- 分治法求眾數和重數(含檔案輸入輸出)
- HDU 4911 Inversion(歸併排序求逆序數)排序
- 求取眾數及重數的演算法實現(Java)演算法Java
- java演算法 求最大公約數Java演算法
- 八大排序演算法—16張圖搞懂基數排序排序演算法