【lookas2001的日常】人型混淆器

lookas2001 2017-05-12 20:45:04
快速排序算法 void qs(int l, int r) { if (l >= r) return; int m, t, i, j, k; m = (l + r) / 2; t = a[l]; a[l] = a[m]; a[m] = t; i = l; j = r; k = a[i]; while (i < j) { while (i < j && a[j] > k) j--; if (i < j) { a[i] = a[j]; i++; } while (i < j && a[i] < k) i++; if (i < j) { a[j] = a[i]; j--; } } a[i] = k; qs(l, i - 1); qs(i + 1, r); } 使用: 定义一个全局的 a[] 调用的时候 qs[0, n-1] #include <stdio.h> #include "stdlib.h" #include "time.h" int a[110], n; void qs(int l, int r) { if (l >= r) return; int m, i, j, k, t; m = (l + r) / 2; t = a[l]; a[l] = a[m]; a[m] = t; i = l; j = r; k = a[i]; while (i < j) { while (i < j && a[j] > k) j--; if (i < j) { a[i] = a[j]; i++; } while (i < j && a[i] < k) i++; if (i < j) { a[j] = a[i]; j--; } } a[i] = k; qs(l, i - 1); qs(i + 1, r); } void ms() { int i, j, f, t; for (i = 0; i <= n - 1; i++) { f = 0; for (j = 1; j <= n - i; j++) if (a[j] > a[j + 1]) { t = a[j]; a[j] = a[j + 1]; a[j + 1] = t; f++; } if (f == 0) break; } } int main() { int i, j, k, t, p; scanf("%d", &n); // 产生n个随机数保存在数组中 srand(time(NULL)); for (i = 1; i <= n; i++) a[i] = rand() % 100; // 输出排序之前n个数 printf("排序前:"); for (i = 1; i <= n; i++) printf("%d ", a[i]); // 排序 ms(0, n - 1); // 输出排序之后n个数 printf("\n排序后:"); for (i = 1; i <= n; i++) printf("%d ", a[i]); getchar(); }

评论

lookas2001 2017-05-23 20:51:51
日常灌水,2333