目前对于数组的排序有主要的两种,一种是选择排序,一种是冒泡排序。当然大学学过数据结构的知道,还有一些其他的排序,这里就不说明了,有时间自己上网查查。其实排序在开发中并不常用,
我们学习它是学一种思想,以后的业务逻辑中可能会用到,可能会有相似的逻辑或者培养了我们这种思想,我们今后可以举一反三。不要为了题目而题目,说了一些题外话,不好意思,言归正传。
(1)选择排序(从小到大)
1)思想:选择排序,让数组中的每一个数,依次与后面的数进行比较,如果前面的数大于后面的数,就进行位置的交换。这种说法或许有些人看不明白。换个说法,选择排序:第一个数依次与
后面的数比较,第一次比较完之后最小的数在最前面 。
不理解的看看图应该就差不多了,真不明白就和明白的人讨论讨论吧。
2)代码
* 练习排序-选择排序
* @author Administrator
//数组
int[] arr = {5,3,7,2,6,7,6,5,4,1,9,8};
//第一次循环,是确定一个数依次和后面数的比较的数。
for (int i = 0; i < arr.length -1 ; i++) {
//这个是和第一个数的比较的数
for (int j = i+1; j < arr.length; j++) {
//定义一个临时的变量,用来交换变量
int temp ;
if(arr[i]>arr[j]){
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
//打印最后的排序结果
alert(arr);
}
}
(2)冒泡排序(从小到大)
1)思想:相邻两个数进行比较,第一波比较后,最大的数在最后。(每比较完之后,后面的数就减少一个比较 )
2)代码
* 练习排序--冒泡排序
//数组
int[] arr = {5,3,7,2,6,7,6,5,4,1,9,8};
//外部循环
for(int i=0;i<arr.length-1;i++){
//相连两个数的索引是利用内部循环
for(int index=0;index<arr.length-1;index++){
//同样利用中间变量,注意区分与选择排序的区分
if(arr[index]>arr[index+1]){
int temp=arr[index];
arr[index]=arr[index+1];
arr[index+1]=temp;
}
}
}
alret(arr);
}
}