#include "stdio.h" #include "stdlib.h" void quicksort(int left,int right) { int i, j, n, c, temp; i = left; j = right; temp = a[left]; while(i < j) { while(a[j] > temp && i < j){ j--; } while (a[i] < temp && i > j) { i++; } if (i!= j) { c = a[i]; a[i] = a[j]; a[j] = c; } } a[left] = a[i]; a[i] = temp; quicksort(left, i-1); quicksort(i+1, right); } int main() { int i, j, n, a[10]; scanf("%d", &n); for(i = 1; i <= n; i++) scanf("%d", &a[i]); void quicksort(1, n); for(i = 1; i <= n; i++) printf("%d", a[i]); getchar(); getchar(); return 0; }
时间: 2023-06-16 16:05:15 浏览: 56
精细金属掩模板(FMM)行业研究报告 显示技术核心部件FMM材料产业分析与市场应用
这段代码实现了快速排序算法,可以对输入的数组进行排序。
在主函数中,首先读入数组的长度 n 和数组元素,然后调用 quicksort 函数进行排序。
quicksort 函数中,首先定义了左右两个指针 i 和 j,以及一个基准值 temp。然后利用 while 循环,不断地将左右两个指针向中间移动,直到 i 和 j 指向同一个位置。在移动指针的过程中,如果发现左边的数大于基准值,右边的数小于基准值,就将它们交换位置。最后将基准值放到中间位置,然后对左右两个子数组分别进行递归排序。
在输出排序结果的时候,需要注意循环的上界应该是 n,而不是 n-1。同时,为了让程序暂停等待用户输入,可以使用 getchar 函数。
需要注意的是,这段代码可能存在一些问题,例如数组越界等。同时,快速排序算法的时间复杂度为 O(nlogn),在处理大规模数据时效率比较高。
阅读全文