今天冒泡比较晚,这几天心态有点变化。很奇怪,我只要坐在电脑前就能学进去,但是怎么坐在电脑前,确实一个大问题。脑子里总有一个小天使告诉我,不要去,那里有魔鬼。这可真是一个奇妙的故事,我自己都觉得扯淡。
今天的算法题是一个与数组有关的典型排序算法:
从前往后,从大到小排序
思路:每轮都将最大的数换到后面去
分为内外圈两个循环,外圈循环比较轮数,内圈循环比较当前元素与其他元素的大小,如果比后面的大就交换,直到把最大的扔到后面
public class Test{
public static void main(String[] args){
//给个数组
int[] data = {12,25,5,32,18};
//如果有n个数,比较n-1轮
for(int x = 0;x < data.length-1;x++){
//内圈比较当前元素与其他元素的大小,所以,比较(data.length-1-当前元素)下标轮
for(int i = 0;i < data.length-1-x;i++){
if(data[i] > data[i+1]){
int a = data[i];
data[i] = data[i+1];
data[i+1] = a;
}
//每比较一轮就输出数组元素变化过程
System.out.println(Arrays.toString(data));
}
System.out.println("-------");
}
}
}
这个过程比较麻烦,需要一轮一轮的比较,时间复杂度较高,后期可能水平提高会写一个简单的方法。