本来是想做一个正向排序,但是结果却是反向排序,只要把if里的>=换成<=就能实现正向排序,但是逻辑怎么看也不通,应该怎么修改才能符合逻辑
截图中是从大到小排序。
冒泡排序参考:
for(int i=0;i<arr.length-1;i++){//冒泡趟数
for(int j=0;j<arr.length-i-1;j++){
if(arr[j+1]<arr[j]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
你说的正向排序是从大到小吗?
你的问题是不太理解代码的排序处理吗?
整个排序是从数组的第一个元素开始,与后面的每个元素进行比较,选出最小的元素放到第一个元素位置,从而每次循环都能找出剩余数中的最小数放到数组前列。
双重for循环,i就是当前作为基准进行比较的数组下标。内循环是该下标后的所有元素逐个和这个基准下标的元素比较大小,如果比它大,则交换,使得基准下标元素始终是最小值。这样所有元素作为基准元素比较完就排好序了。
如果你要颠倒顺序,只需要把>=改为<=就可以了