在操作数组时,经常需要对数组的元素进行排序,接下来为大家介绍两种常见的排序算法:冒泡排序和选择排序
冒泡排序
冒泡排序的步骤:
- 从第一个元素开始,将相邻的两个元素依次进行比较,如果左边大于右边则交换,每一轮比较的最后一个元素都是最大的。
- 第二轮除最后一个元素,将剩余的元素进行两两比较。
- 依次类推,持续的重复上面的步骤,直到没有任何一对元素需要比较为止。
实现步骤:
- 首先先将各个步骤代码写出来,再拼接起来
- 先将比较的代码实现出来
// 比较相邻的元素,如果左边的元素大于右边的元素,则交换位置
if(arr[y]>arr[y+1]) {
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
}
- 接下来定义循环:根据题意可知我们与要定义一个嵌套循环,这里用for循环,由于需要先获取到所有的元素,所以外循环:
// 由此可知代码
/* 这里减一是因为每一轮比较都可以确定一个元素
所以最后一个元素不需要比较了
当然这个减一是可以去掉的,不过这样没有意义*/
for(int x = 0;x <arr.length-1;x++){
}
- 每一个元素都需要进行往后的不断比较,只不过需要比较的次书会随着外循环的不断递增而不断减小,所以遍历的次数是"arr.length-x-1",这个减一是必须有的,没有的话会多进行一次比较,直接报错
for(int y = 0;y < arr.length-x-1;y++) {
}
最后代码如下:
for (int x = 0; x < arr.length-1; x++) {
for(int y = 0;y < arr.length-x-1;y++) {
// 比较相邻的元素,左边元素大于右边元素,则交换位
if(arr[y]>arr[y+1]) {
//定义
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
}
}
}
// 这里输出的是排序完成后数组的顺序
System.out.println(Arrays.toString(arr));