برنامه جستجوی خطی در زبان برنامه نویسی C
الگوریتم جستجوی خطی (Linear Search) یکی از ساده ترین الگوریتم های جستجو می باشد. این الگوریتم عاصر لیست را به صورت یکی یکی بررسی می کند تا آرگومان جستجو پیدا شود.
پیچیدگی
اگر تعداد عناصر مجموعه n باشد، زمان جستجو (O(n است. بهترین حالت زمانی اتفاق میافتد که آرگومان جستجو برابر با اولین عنصر لیست باشد که با یک مقایسه پیدا میشود. بدترین حالت زمانی وقتی است که داده درون لیست وجود ندارد یا در انتهای لیست واقع شده است که n مقایسه مورد نیاز است.
اگر تعداد عناصر کم باشد جستجوی خطی به دلیل سادگی از الگوریتمهای پیچیده دیگر مناسب تر است. برای لیستهای نامرتب اغلب جستجوی ترتیبی اولین انتخاب است. کارائی الگوریتم روی یک لیست مرتب بالا میرود. در این حالت به جای رسیدن به انتهای لیست، جستجو با رسیدن به اولین عنصری که بزرگتر(یا کوچکتر) از آرگومان جستجو است خاتمه پیدا میکند.
کد برنامه جستجوی خطی:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
#include <stdio.h> int main() { int array[100], search, c, n; printf("Enter the number of elements in array\n"); scanf("%d",&n); printf("Enter %d integer(s)\n", n); for (c = 0; c < n; c++) scanf("%d", &array[c]); printf("Enter the number to search\n"); scanf("%d", &search); for (c = 0; c < n; c++) { if (array[c] == search) /* if required element found */ { printf("%d is present at location %d.\n", search, c+1); break; } } if (c == n) printf("%d is not present in array.\n", search); return 0; } |
کد برنامه جستجوی خطی برای وجود چند آرگومان در لیست
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
#include <stdio.h> int main() { int array[100], search, c, n, count = 0; printf("Enter the number of elements in array\n"); scanf("%d",&n); printf("Enter %d numbers\n", n); for ( c = 0 ; c < n ; c++ ) scanf("%d",&array[c]); printf("Enter the number to search\n"); scanf("%d",&search); for ( c = 0 ; c < n ; c++ ) { if ( array[c] == search ) { printf("%d is present at location %d.\n", search, c+1); count++; } } if ( count == 0 ) printf("%d is not present in array.\n", search); else printf("%d is present %d times in array.\n", search, count); return 0; } |
کد برنامه جستجوی خطی با استفاده از تابع
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
#include <stdio.h> int linear_search(int*, int, int); int main() { int array[100], search, c, n, position; printf("Enter the number of elements in array\n"); scanf("%d",&n); printf("Enter %d numbers\n", n); for ( c = 0 ; c < n ; c++ ) scanf("%d", &array[c]); printf("Enter the number to search\n"); scanf("%d",&search); position = linear_search(array, n, search); if ( position == -1 ) printf("%d is not present in array.\n", search); else printf("%d is present at location %d.\n", search, position+1); return 0; } int linear_search(int *pointer, int n, int find) { int c; for ( c = 0 ; c < n ; c++ ) { if ( *(pointer+c) == find ) return c; } return -1; } |
پیروزباشید، طراح باشی
پیروز باشید!
طراح باشی
تعریف یک آرایه ۱۰ عضوی ک در آن بدنبال یک عضو هستیم
ممنون میشم کمکم کنید
خیلی مهمه
سلام.این قسمت کد که میگه scanf(“%d”,&n); میشه توضیح بدید
سلام
الگوریتمی بنویسید که تععین کند درخت دودویی نسبتا کامل یک هیپ است یا خیر؟جواب این سوال رو میخواستم
ممنون میشم جواب بدید
با سلام
دوست عزیز اگر امکانش هست یکم بیشتر توضیح بدهید.