首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数组排序失败

数组排序失败
EN

Stack Overflow用户
提问于 2011-04-08 23:44:38
回答 3查看 173关注 0票数 0

我尝试按升序对由1到10的随机数组成的数组进行排序。我想出了这个函数:

代码语言:javascript
复制
void Sort(int a[10], int n)
{
    int j = 0;
    for (int i = 0; i < n-1; i++)
    {
        j = i+1;
        if (a[i] > a[j])
        {
            int aux = a[i];
            a[i] = a[j];
            a[j] = aux;
        }
    }
}

但是当我尝试输出数组时,函数似乎不起作用:

代码语言:javascript
复制
Sort(array, 10);

    cout<<endl;

    for (int i = 0; i < 10; i++)
    {
        cout<<array[i]<<" ";
    }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-08 23:48:05

Sort函数中的算法是错误的。它根本不会排序。

无论如何,不要重复发明轮子,最好使用std::sort

代码语言:javascript
复制
#include <algorithm>

std::sort(array, array+10);

至于您的Sort函数,您希望使用冒泡排序算法来实现该函数,可能是出于学习目的。正确的实现是这样的:

代码语言:javascript
复制
void Sort(int *a, int n)
{
    for (int i = 0; i < n ; i++)
    {
       for (int j =  i + 1; j < n ; j++)
       {
           if (a[i] > a[j])
           {
              int aux = a[i];
              a[i] = a[j];
              a[j] = aux;
           }
       }
    }
}
票数 2
EN

Stack Overflow用户

发布于 2011-04-08 23:47:33

您只是在进行n交换。您需要在sort上使用一个外部循环(假设它是bubble sort),以便继续执行该操作,直到停止执行交换为止。

代码语言:javascript
复制
bool Sort(int a[10], int n)
{
    bool swapped = false;
    int j = 0;
    for (int i = 0; i < n-1; i++)
    {
        j = i+1;
        if (a[i] > a[j])
        {
            int aux = a[i];
            a[i] = a[j];
            a[j] = aux;
            swapped = true;
        }
    }
    return swapped;
}

int main(int argc, char** argv) {
    int a[10] = {5,4,3,1,2,6,7,8,9,10};
    while (Sort(a,10));

    for (int i=0;i<10;++i) {
        std::cout << a[i] << std::endl;
    }
}
票数 1
EN

Stack Overflow用户

发布于 2011-04-08 23:51:42

这只会传递一次数据,下面是一个示例,向您展示发生了什么

代码语言:javascript
复制
8 7 9 2 3 4 5

在遍历函数之后,结果将是

代码语言:javascript
复制
7 8 2 3 4 5 9
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5597532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档