日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言查找算法

發布時間:2024/7/19 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言查找算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

/**

?查找(數組)

?1> 順序查找 : 就是遍歷數組每一個元素同該元素比較,但是問題是效率比較低

?2> 折半查找 : 條件是數組必須是有順序的

?*/

#include <stdio.h>

#define n 2

int main()

{

? ? // 折半查找

? ? ? ? /*

?? ? ? ? 思路:將該元素同中間元素比較,如果有則存在,否則,判斷該元素在哪半部分,繼續查找;

?? ? ? ? */

?? ?

? ? // 任意輸入整數x,在有順序的數組中查找是否有同x值相同的元素

? ? // 定義輸入數據

? ? int x = -1;

? ? // 數組array

? ? int array[10] = {2, 10, 19, 22, 34, 36, 55, 67, 76, 88};

? ? scanf("%d", &x);

? ? // 定義開始元素下標start, 尾標end, 中間元素下標mid

? ? int start = 0;

? ? int end = 9;

? ? int mid = (start + end)/2;

? ? while (array[mid] != x && (end > start)){

? ? ? ? ? if (x < array[mid]) { ? ? ? ??

? ? ? ? ? ? end = mid - 1;

? ? ? ? }else{

?? ? ? ? ? ?

? ? ? ? ? ? start = mid + 1;

? ? ? ? }

? ? ? ? mid = (start + end)/2;

? ? }

? ? printf("%d\n", mid);

? ? return 0;

}

?

#include <stdio.h>

#pragma mark 折半查找 前提是該數組為順序數組,同時折半查找還能用于插入有序數組中得位置,

#pragma mark 當然我們也可以用for循環查找元素,但是效率較低,當面對大量數據有序數據是,折半查找效率比較高

#pragma mark 如果我們面對一些無須的數據時,如果查找一組數據中是否含有某個數據時,可以先排序,然后用折半查找該元素

#pragma mark 折半查找

int zheban_array(int *array, int len, int num)

{

? ? int start = 0;

? ? int end = len-1;

?? ?

? ? // 循環的條件

? ? while (start<=end) {

? ? ? ? int mid =(start+end)/2;

? ? ? ? if (array[mid]<num) {

? ? ? ? ? ? start = mid+1;

? ? ? ? }else if(array[mid]>num){

? ? ? ? ? ? end = mid-1;

? ? ? ? }else{

? ? ? ? ? ? return mid; // 如果是查找插入元素的話 mid+1就是要插入的位置(查找到存在的插入的元素)

? ? ? ? }

//? ? ? ? mid = (start+end)/2;

? ? }

? ? return -1; //如果查找的話,return start 就是要插入的位置(查找插入的不存在的元素)

}

?

#pragma mark 遍歷數組

void? printf_array(int *array, int len){

?? ?

? ? for (int i = 0; i<len; i++) {

? ? ? ? printf("%d\t", array[i]);

? ? }

? ? printf("\n");

}

int main()

{

? ? int array[] = {3, 5, 8, 23, 34, 65, 99};

? ? int len = sizeof(array)/sizeof(int);

? ? int n = zheban_array(array, len, 34);

? ? printf("%d\n", n);

? ? return 0;

}

?

轉載于:https://www.cnblogs.com/-boy/p/4020803.html

總結

以上是生活随笔為你收集整理的C语言查找算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。