实现代码:结果从小到大
for(int j = 0 ;j < score.length - i - 1; j++){ //对当前无序区间score[0......length-i-1]进行排序(j的范围很关键,这个范围是在逐步缩小的) if(score[j] > score[j + 1]){ //把小的值交换到后面 int temp = score[j]; score[j] = score[j + 1]; score[j + 1] = temp; } }
说明:1.这里边有两个循环:第一个循环是整个要排序的次数(就是要排序数据的个数减去1,这里有待商榷,其实有些数列不需要排这么多次数,但是排这么多次数
是不会错的,只是后边几次排的可能完全一样,也就是提前就排出了结果)
2.第二个循环就是在第一个循环队列的基础上进行数据比较,可以想象有一个游标,从指着队列的第一个数开始,比较前一个和后一个的大小,然后交换顺序,把
小的放前边,然后游标移动到第二个(队列里的数在边,但游标是从1到最好一个的),然后再比较,再交换,然后再移动游标,最后一个游标跟第一个循环的次数
有关,因为第一个循环做完,肯定会找出一个最大的数出来放到后边,所以第二个游标每次要移动的位置是越来越少的
3.等第一个循环做完,就出来结果了