gpt4 book ai didi

c - 排序数组在 ANSI C 中不起作用

转载 作者:行者123 更新时间:2023-12-04 05:21:13 25 4
gpt4 key购买 nike

我正在用 ANSI C 编写代码,这段代码必须完成一个简单的任务:

  • 对数组进行排序
  • 在数组中搜索元素
  • 如果找到则返回元素位置
  • 否则返回-1

  • 我这样定义我的函数:
    int search_sorted(int *array, int dimensione, int elemento) {
    int i;
    for(i=0;i<dimensione;i++){
    //fill the array with random numbers
    *(array+i)=((int)(rand()%RANDOM_MAX));
    }
    sort(array,dimensione);
    //this should actually sort the array?
    for(i=0;i<dimensione;i++){
    printf(" posizione %d\t -\t %d\n",i+1,array[i]);
    //print the array...
    }
    for(i=0;i<dimensione;i++){
    if(elemento>array[i]){
    return -1;
    } else if(array[i] == elemento) {
    return ++i;
    }
    }
    return -1;
    }

    //sorting function
    int sort (int *array,int dim){
    int i, temp;
    for (i=0;i<(dim-1);i++){
    if(array[i]>array[i+1]){
    temp=array[i+1];
    array[i+1]=array[i];
    array[i]=temp;
    }
    }

    }

    问题是排序根本不适用,我看不出它不适用的原因......我100%确定我传递了正确的元素(没有编译错误或任何东西...... )

    知道为什么它不起作用,以及如何解决这个问题?

    最佳答案

    您正在尝试实现冒泡排序算法。您的实现不正确。
    您的循环只是将最大的元素放在最后一个位置。

    您需要使用另一个循环来嵌套这个循环。

    for(j=0;j<dim-1;j++)
    for (i=0;i<(dim-1-j);i++){
    if(array[i]>array[i+1]){
    temp=array[i+1];
    array[i+1]=array[i];
    array[i]=temp;
    }

    关于c - 排序数组在 ANSI C 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13670175/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com