資料結構----查詢1(順序查詢,折半查詢)
阿新 • • 發佈:2018-12-10
#include <stdio.h> #define maxSize 100 #define num 4 int R[maxSize] = { 0 }; int count = 0; /*********輸入資料*********/ void Indata() { printf("請輸入整數資料(按回車鍵停止輸入):"); int i = 0; char ch; while (1) { scanf_s("%d", &R[i]); i++; count++; ch = getchar(); if ('\n' == ch) break; } } /*******順序查詢*******/ int Search_Seq(int r[],int n) { int i=0; int key; printf("請輸入您要查詢的數值:"); scanf_s("%d", &key); printf("順序查詢:\n"); while (r[i] != key) i++; if (i < n) { printf("位置:%d 數值:%d", i, r[i]); return i; } else { printf("查詢無該值"); return -1; } } /***********折半查詢*********/ //僅適用於有序的順序表 int Binary_Search(int r[],int low,int high) { int mid; int key; printf("請輸入您要查詢的數值:"); scanf_s("%d", &key); printf("折半查詢:\n"); while (low <= high) { mid = (low + high) / 2; if (r[mid] == key) { printf("位置:%d 數值:%d", mid, r[mid]); return mid; } else if (r[mid] > key) high = mid - 1; //從前半部分繼續查詢 else low = mid + 1; //從後半部分開始查詢 } printf("查詢無該值"); return -1; } void main() { Indata(); //Search_Seq(R, count); printf("\n"); Binary_Search(R,0, count - 1); system("pause"); }