冒泡排序,并二分查找

mac2024-08-22  60

个人练习,主要是冒泡和二分查找的逻辑。比较简单,就不多写说明了

#include<stdio.h>/冒泡排序二分查找结合! #include<Windows.h> #include<math.h> #include<string.h> #include<time.h> #pragma warning(disable:4996) #define A 30 void FunMade(int *a, int num) { for (int b = 0; b < num; b++) { a[b] = rand() % 100 + 1; } } void ShowFun(int *a,int num) { for (int c = 0; c < num; c++) { printf("a[%d]=%d \t", c, a[c]); if ((c%5+1)==5) { printf("\n"); } } } void Bubb(int *a, int num) { for (int x = 0; x < num - 1; x++) { for (int y = 0; y < num - 1 - x; y++) { if (a[y] >= a[y + 1]) { a[y] = a[y] ^ a[y + 1]; a[y + 1] = a[y] ^ a[y + 1]; a[y] = a[y] ^ a[y + 1]; } } } } void Dichotomy(int *a,int num) { printf("what is the number do you want to find!\n\ please enter it!!!\n"); int b = 0; scanf("%d", &b); int left = 0, right = num-1; int mid = 0; int c = 0; while (left <= right) { mid = (left + right) / 2; if (a[mid] > b) { right = mid - 1; } else if (a[mid] < b) { left = mid + 1; } else if (a[mid] = b) { printf("find it! a[%d]=%d ", mid, a[mid]); c = 1; break; } } if (c == 0) { printf("this number is not in the array!!"); } } void main() { system("color 01"); srand((unsigned long)time(NULL)); int a[A] = { 0 }; int num = 0; num=sizeof(a) / sizeof(a[0]); FunMade(a,num);//数组随机赋值 ShowFun(a,num); printf("\n=====================================\n"); Bubb(a, num);//冒泡排序 ShowFun(a, num); printf("\n=====================================\n"); Dichotomy(a,num);//二分查找 system("pause"); }
最新回复(0)