首页 > 代码库 > 选择排序和冒泡排序的实现
选择排序和冒泡排序的实现
//选择排序
/*实现原理:数组的每一个数都和它后面的每一个数进行比较,找到从它本身到数组结束的最值(这里是最小值),把它和最值得位置进行交换。从而实现排序*/
@Test
public void selectSort() {
int[] nums = new int[] {4,8,5,7,6,2,4,9,5,7,3,5}; //定义一个无须数组
for(int i = 0; i < nums.length - 1; i++) { //因为数组的最后一位没有可以比较的了,所以取到数组的倒数第二位
for(int j = i+1; j < nums.length;j++) { //因为是每个数和它后面的数比较,所以从i+1的位置开始比较
if(nums[i] > nums[j]) { //控制升序排序,把大于改成小于就是降序排序
int temp = nums[i]; //交换位置操作
nums[i] = nums[j];
nums[j] = temp;
}
}
}
System.out.println(Arrays.toString(nums));
}
//冒泡排序
/*实现原理:数组的每一个数都只和它后面的紧挨着的一个数进行比较,把两个数中较大的一个数挪到后面。
这样每一趟完整的比较,最大值都会被挪到最后面,从而实现升序排序*/
@Test
public void bubbleSort() {
int[] nums = new int[] {4,8,5,7,6,2,4,9,5,7,3,5}; //定义一个无须数组
for(int i = 0; i < nums.length - 1; i++) { //第一层的循环是控制总共需要进行多少次完整的比较
for(int j = 0; j < nums.length -1 -i;j++) { /*每一次完整的比较,最大的数都被挪到最后面, 所以,后面的数已经排序好了,比较的一直是前面的数。 length-i-1是因为,
有i个数已经被挪到最后面了, 这i个数已经是排序好的了,不用比较。 -1是因为, 比较的两个数的的索引是j和j+1*/
if(nums[j] > nums[j+1]) { //控制升序排序,把大于改成小于就是降序排序
int temp = nums[j]; //交换位置操作
nums[j] = nums[j + 1];
nums[j + 1] = temp;
}
}
}
System.out.println(Arrays.toString(nums));
}
选择排序和冒泡排序的实现