排序数组赢得';不能在ANSI C中工作

排序数组赢得';不能在ANSI C中工作,c,ansi,C,Ansi,我正在用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

我正在用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;
    }
}
int搜索\u排序(int*数组、int维、int元素){
int i;

对于(i=0;i您正在尝试实现冒泡排序算法。您的实现不正确。 你的循环只是把最大的元素放在最后一个位置

您需要使用另一个应该嵌套此循环的循环

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;
    }

for(j=0;jokay,我在谷歌上搜索了bubble sort,找到了一些非常有用的东西,我不知道这样的东西已经存在,但我不明白为什么我的不适用(我的意思是,我知道我缺少很多迭代,但我的甚至不会交换一个单元格…)我没有投反对票,但你的答案最初只是毫无用处“您的实现不正确“在你编辑它之前,我并不惊讶它被否决了。@interjay的作品甚至不知道它被称为冒泡排序。所以,即使在那一点上,它也不是无用的。@YuriCollector的sEditionRossi你怎么知道你的代码甚至没有交换一个单元格?好的,thx,我现在明白我做错了什么了^^谢谢你的信息:)