C中的排序数组功能

时间:2017-05-14 06:41:29

标签: c arrays algorithm sorting

我已经编写了这个函数来对整数数组进行排序,这里的标志是指示是按升序还是降序对数组进行排序,size是数组的大小。你能告诉我我写错了什么,我也检查了算法。

void sortArray(int a[], int flag, int size) {
    int temp, index;
    int start = 0;
    int smallest = start;
    if (flag) {
        while (start < size) {
            index = start;
            while (index < size) {
                if(a[index] < a[smallest]) {
                    smallest = index;
                }
                index++;
            }
            temp = a[smallest];
            a[smallest] = a[start];
            a[start] = temp;
            start++;
        }
    }
    else{
        while (start < size) {
            index = start;
            while (index < size) {
                if(a[index] > a[smallest]) {
                   smallest = index;
                }
                index++;
            }
            temp = a[smallest];
            a[smallest] = a[start];
            a[start] = temp;
            start++;
       }
   }
}

1 个答案:

答案 0 :(得分:0)

在第二个while循环之前添加smallest = index;,就像这样

    if (flag) {
    while (start < size) {
        index = start;
        smallest = index;
        while (index < size) {
            if(a[index] < a[smallest]) {
                smallest = index;
            }
            index++;
        }
        temp = a[smallest];
        a[smallest] = a[start];
        a[start] = temp;
        start++;
    }
}

如果没有这个添加,你的循环会不断检查已经排序的元素,这会弄乱算法