开发者社区> 问答> 正文

1. 请选择一种排序算法对数组[3,7,9,2,-1,22]进行排序。]

1. 请选择一种排序算法对数组[3,7,9,2,-1,22]进行排序。]

展开
收起
知与谁同 2018-07-18 14:47:44 1681 0
3 条回答
写回答
取消 提交回答
  • 阿里云开发者社区运营负责人。原云栖社区负责人。
    你今年
    2019-07-17 22:50:02
    赞同 展开评论 打赏
  • 云栖社区聚能聊、问答管理员~发福利、搞怪,八卦我来,论技术、发话题、写博客你上!
    冒泡法或者是快速排序
    2019-07-17 22:50:01
    赞同 展开评论 打赏
  • 快速排序算法:其中T为测试次数,n为元素个数
    #include <iostream>
    using namespace std;

    int partition(int *s, int low, int high)
    {
    int i, j, t;
    int pivot = s[low];
    j = low;
    for (i = low + 1; i <= high; i++)
    {
    if (s[i] < pivot)
    {
    j++;
    t = s[i];
    s[i] = s[j];
    s[j] = t;
    }
    }
    t = s[j]; //交换pivot和比pivot小的序列的最后一个数
    s[j] = pivot;
    s[low] = t;
    return j;
    }

    void Quicksort(int *s, int low, int high)
    {
    int pivot; //中枢轴
    if (low < high)
    {
    pivot = partition(s, low, high);
    Quicksort(s, low, pivot - 1); //对低子表递归排序
    Quicksort(s, pivot + 1, high); //对高子表递归排序
    }
    }

    int main()
    {
    int T, N;
    int i;
    int a[1000];
    cin >> T;
    while (T--)
    {
    cin >> N;
    for (i = 0; i < N; i++)
    cin >> a[i];
    Quicksort(a, 0, N - 1);
    for (i = 0; i < N; i++)
    cout << a[i] << endl;
    }
    return 0;
    }

    冒泡排序算法:其中T为测试次数,n为元素个数
    #include <iostream>
    using namespace std;

    int main()
    {
    int T, N;
    int i, j, k, t;
    int a[1000];
    cin >> T;
    while (T--)
    {
    cin >> N;
    for (i = 0; i < N; i++)
    cin >> a[i];
    for (j = 0; j < N - 1; j++)
    {
    for (k = 0; k < N - j - 1; k++)
    {
    if (a[k] > a[k + 1])
    {
    t = a[k + 1];
    a[k + 1] = a[k];
    a[k] = t;
    }
    }
    }
    for (i = 0; i < N; i++)
    cout << a[i] << endl;
    }
    return 0;
    }
    2019-07-17 22:50:01
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

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