C語言實現折半查詢演算法
折半查詢演算法
將數列按有序化排列,查詢過程中按跳躍方式查詢。即先以有序數列的中間位置為比較物件,如果要查詢的元素值小於該中點元素值,則將待查詢序列縮小為左半部分,否則為右半部分。通過一次比較,將查詢區間縮小一半。
int fun(int a[], int m )
{
int low = 0, high = N-1, mid;
while(low <= high)
{
mid = (low+high)/2;
if(m < a[mid])
high = mid-1;
else if(m > a[mid])
low = mid+1;
else
return(mid);
}
return(-1);
}
相關推薦
C語言實現折半查詢演算法
折半查詢演算法 將數列按有序化排列,查詢過程中按跳躍方式查詢。即先以有序數列的中間位置為比較物件,如果要查詢的元素值小於該中點元素值,則將待查詢序列縮小為左半部分,否則為右半部分。通過一次比較,將查詢區間縮小一半。 int fun(int a[], int m ) {
C語言實現折半查詢(二分查詢)的演算法
編寫一個程式exp9-2.cpp,輸出在順序表(1,2,3,4,5,6,7,8,9,10)中採用折半查詢方法查詢關鍵字9的過程。 //檔名:exp9-2.cpp #include <stdio.h> #define MAXL 100 //定義表中最多記錄
C語言實現折半插入演算法
1 #include <stdio.h> 2 int BInsertSort(int array[],int left,int right){ //接收主函式呼叫語句中的實參傳到這裡的形參裡 3 int low,high,mid; 4 int temp; 5
【c語言】折半查詢演算法
折半查詢 又稱為二分查詢,優點是比較次數少,查詢速度快,平均效能好,佔用系統記憶體較少;其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。首先,假設表中元素是按升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,
(排序演算法)linux c語言實現選擇排序演算法(氣泡排序的略微改進版)
快速排序演算法和氣泡排序演算法是差不多的,都是要兩層迴圈,外迴圈是要比較的個數,其實就是元素的個數,內迴圈就是外層那個標記和其他的比較大小, 氣泡排序是相鄰的兩個,兩兩比較,最後交換出一個最大或者最小值, 快速排序是在氣泡排序的基礎上,找出那個最小的或者最大的,但是不是直接交換,
c語言實現常用排序演算法
#include <stdio.h> #include <stdlib.h> #define arrLen(arr) sizeof(arr)/sizeof(arr[0]) void print(int arr[], int len) { int i = 0; fo
C語言實現八大排序演算法詳解及其效能之間的
概述 排序是資料結構中的重要一節,也是演算法的重要組成部分。主要分為內部排序以及外部排序,今天我們講內部排序,也就是八大排序。 插入排序 直接插入排序 演算法思想 演算
C語言學習_查詢演算法(二)
3 分塊查詢 演算法思想:將待查的元素均勻的分成塊,塊間按大小順序排序,塊內不排序。 具體的,設待查元素有15 個,將其按關鍵字大小分成3塊,這15個數的排列是一個有序序列,也可以給出無序序列,但也是必須得滿足分在第一塊中的任意元素小於第二塊中的所有數,第二塊中的任意元素
(排序演算法)linux c語言實現選擇排序演算法
/*************************************************** ##filename : arrinsert.c ##author : GYZ ##
c語言的七大查詢演算法,非常值得學習
今天帶著大家學習下,C語言七大查詢演算法!!!!!!!!!!這裡我們首先看下演算法的概念: 演算法(Algorithm)是指解題方案的準確而完整的描述,是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制。也就是說,能夠對一定規範的輸入,在有限時間內獲
C語言實現的RSA演算法程式
程式中有關型別轉換程式碼略做修改,並且已經能夠編譯執行。 程式如下: #include <stdio.h> #include <stdlib.h> #include <time.h> #include <string.h>
C語言版二分查詢演算法
二分查詢演算法是在有序陣列中用到的較為頻繁的一種演算法,在未接觸二分查詢演算法時,最通用的一種做法是,對陣列進行遍歷,跟每個元素進行比較,其時間為O(n).但二分查詢演算法則更優,因為其查詢時間為O(
【c語言】折半查詢
折半查詢 程式設計思路:折半排序 就是將一個有序的陣列,輸入一個數,找這個數所對應的下標位置、 折半聽上去就是說一半一半,對。就是這個樣子,折半就是將元素的最小下標賦值給一個low 最大下標賦值給high 在定義一個mid變數,mid變
C語言實現單鏈表演算法
#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct slist_node_s { struct slist_node_
C語言實現氣泡排序演算法(升序)
總結: 1、氣泡排序有二種順序來排序的。有升序或者降序來進行氣泡排序(注意萬一在面試中,面試官有問到氣泡排序,要問清楚面試官是用什麼順序來進行氣泡排序的)這裡預設是用升序來進行排序的。 2、氣泡排序思路(第一層)是先從第一個數開始冒泡(對應陣列中的a[0]的值),然
C語言實現氣泡排序演算法------比較排序
Requirement:將一個無序陣列,按照遞增的順序進行排列1.核心思想將相鄰的兩個資料進行比較,較大的資料逐漸上移。第一次迴圈完成之後最大的數,將出現在最上面。2.具體實現#include <stdio.h>void BubbleSort(int testNu
C語言之折半查詢
//折半查詢 #include "stdio.h" int find(int num,int arr[]) { int xiabiao=-1; int low=0; int high=8; int mid=(low+high)/2; while(low<=high)
C語言實現身份證查詢系統
分為三個檔案 id.h ,main.cpp ,way.cpp id.h : #ifndef _ID_H_ #define _ID_H_ #include<stdio.h> #include<Windows.h> #include<io
c語言實現排列組合演算法問題
排列組合是演算法常用的基本工具,如何在c語言中實現排列組合呢?思路如下: 首先看遞迴實現,由於遞迴將問題逐級分解,因此相對比較容易理解,但是需要消耗大量的棧空間,如果執行緒棧空間不夠,那麼就執行不下去了,而且函式呼叫開銷也比較大。 (1) 全排列: 全排列表示把集合
找零錢問題(C語言實現)——貪心演算法應用(1)
#include<stdio.h> void greedyMoney(int m[],int k,int n); int main(void) { int money[] = {20,10,5,1}; int k; k = sizeof(money)/sizeof(money[0]