开发者社区> 问答> 正文

快速排序算法

快速排序算法

展开
收起
知与谁同 2018-07-19 10:52:01 1946 0
2 条回答
写回答
取消 提交回答
  • SYN

    C++: #include using namespace std; #define _ITERATOR_DEBUG_LEVEL 2 #pragma warning(disable:4996) int adjustarray(int a[], int l, int r) { int i = l, j = r; int x=a[l]; while (i < j) { while (i < j&& x<=a[j]) { j--; } if (i < j) { a[i] = a[j]; i++; } while (i<j && x>a[j]) { i++; } if (i < j) { a[i] = a[j]; } } a[i] = x; return i; } void quicksort(int a[], int l, int r) { if (l < r) { int rr = adjustarray(a, l, r); quicksort(a, l, rr-1); quicksort(a, rr + 1,r); } }

    int main() { int a[1000],x; printf("请输入数组的的长度"); scanf("%d", &x); for (int i = 0; i < x; i++) { printf("请输入第%d个元素的大小", i+1); scanf("%d", &a[i]); } quicksort(a, 0, x-1); printf("排列后的数组为"); for(int i = 0; i<x; i++) printf("%d ", a[i]); printf("\n"); return 0;

    2021-10-24 17:15:47
    赞同 展开评论 打赏
  • 胜天半子
    C语言程序:

    /* 快 速 排 序 */
    #include "stdio.h"

    void QuickSort(int e[], int first, int end)
    {
    int i=first,j=end,temp=e[first];
    while(i<j)
    {
    while(i<j && e[j]>=temp)
    j--;
    e[i]=e[j];
    while(i<j && e[i]<=temp)
    i++;
    e[j]=e[i];
    }
    e[i]=temp;
    if(first<i-1)
    QuickSort(e,first,i-1);
    if(end>i+1)
    QuickSort(e,i+1,end);
    }

    void main()
    {
    int arr[] = {49, 38, 65, 97, 76, 13, 27, 49};
    int len = 8;
    int i;
    printf("before sort\n");
    for(i=0; i<len; i++)
    printf("%d ", arr[i]);
    printf("\n");

    QuickSort(arr, 0, len-1);

    printf("after sorted\n");
    for(i=0; i<len; i++)
    printf("%d ", arr[i]);
    printf("\n");
    }
    2019-07-17 22:50:43
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
袋鼠云基于实时计算的反黄牛算法 立即下载
Alink:基于Apache Flink的算法平台 立即下载