你这样肯定是排不了序的! 为什么呢 你一步一步跟一下程序你会发现,第一步你会实现2和3的交换 然后i++ 现在num=3 num[i+1]=4 程序条件不满足 执行i++ 然后现在num=4 num[i+1]=1 然后两者交换 就输出了2 3 1 4。如果要想排序 有很多方法 冒泡 选择 快排之类的 都很方便。我用快速排序给你写了一个例子 自己领悟下喔。- void sort(int arr[], int l, int r)
- {
- int i = l;
- int j = r;
- int x = arr[i];
- if(l < r)
- {
- while(i < j)
- {
- while((i<j) && (arr[j]>x))
- j--;
- arr[i] = arr[j];
- while((i<j) && (arr[i]<x))
- i++;
- arr[j] = arr[i];
- }
- arr[i] = x;
- sort(arr, l, i-1);
- sort(arr, i+1, r);
- }
- else
- return;
- }
- int main() //快速排序
- {
- int i;
- int arr[4] = {3,2,4,1};
- sort(arr, 0, 3);
- for(i = 0; i < 4; i++)
- printf("%d ", arr[i]);
- printf("\n");
- return 0;
- }
复制代码 |