1、用冒泡法对数组进行排序(升序) #include <stdio.h> #include <stdlib.h>
void sort(int a[], int n) { int i, j, t; for (i = 0; i < n-1 ; i++) { for (j = 0; j < n-1; j++) { if (a[j] > a[j+1]) { t = a[j]; a[j] = a[j+1]; a[j+1] = t; } } } }
int main() { int a[5], i; for (i = 0; i < 5; i++) { printf("input a[%d]=", i); scanf("%d", &a[i]); } sort(a, 5); for (i = 0; i < 5; i++) { printf("%4d", a[i]); } system("pause"); return 0; } 2、用插入法排序将输入到数组中的元素进行排序 #include <stdio.h> #include <stdlib.h>
void fun(int a[], int n) { int k, j, t; for (j = 1; j < n; j++) { t = a[j]; k = j - 1; while (k >= 0 && t > a[k]) { a[k + 1] = a[k]; k--; } a[k + 1] = t; } }
int main() { int a[5], i; for (i = 0; i < 5; i++) { printf("input a[%d]=", i); scanf("%d", &a[i]); } fun(a, 5); for (i = 0; i < 5; i++) { printf("%4d", a[i]); } system("pause"); return 0; } 3、用选择法将输入的10个数进行排序 #include <stdio.h> #include <stdlib.h>
int main() { int i, j, min, tem, a[10]; for (i = 0; i < 10; i++) { printf("input a[%d]=", i); scanf("%d", &a[i]); } for (i = 0; i < 10; i++) { printf("%d", a[i]); } for (i = 0; i < 10 - 1; i++) { min = i; for (j = i + 1; j < 10; j++) { if (a[min] > a[j]) { min = j; } } tem = a[i]; a[i] = a[min]; a[min] = tem; } printf("\n"); for (i = 0; i < 10; i++) { printf("%d", a[i]); } system("pause"); return 0; } 4、用折半查找法,将查看输入的数字是否在10个元素的升序数组中,如果在是第几个 #include <stdio.h> #include <stdlib.h>
int main() { int a[10] = { 12,32,45,62,71,76,80,85,90,95 }; int num, bott, top, mid; printf("input a number:"); scanf("%d", &num); bott = 0; top = 9; while (bott <= top) { mid = (bott + top) / 2; if (num == a[mid]) { printf("%d是第%d个数", num, mid + 1); break; } else if (num < a[mid]) { top = mid - 1; } else { bott = mid + 1; } } if (bott > top) { printf("no\n"); } system("pause"); return 0; }
|
|