版权声明:本文为博主原创文章,转载请附上博文链接! https://blog.csdn.net/f2764052703/article/details/88944223
冒泡排序(BubbleSort)
冒泡排序是一种每次找到最值的排序方法,找到最值以后通过比较的过程将它放在数组的一端,下次遍历时就不再去看它,只用将剩下的数组遍历,从剩下数组中找到最值,并将它放到一端。
代码如下:
package study06_base;
public class sort {
public static void main(String[] args) {
int[] arr = {1 ,2 ,5 ,7 ,3 ,9 ,4 ,0 ,6 ,8};
// 冒泡排序
// 通过遍历依次确定最大值(最小值),次值,直到最小值(最大值),看所需要的顺序
// 从小到大排序
for (int i = 1 ; i <= arr.length ; i++) {
for (int j = 0 ; j < arr.length-i ; j++) {
if (arr[j] > arr[j+1]){
int temp;
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
for (int index: arr) {
System.out.print(index + " ");
}
System.out.println();
// 从大到小排序
for (int i = 1 ; i <= arr.length ; i++) {
for (int j = 0 ; j < arr.length-i ; j++) {
if (arr[j] < arr[j+1]){
int temp;
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
for (int index: arr) {
System.out.print(index + " ");
}
}
}
步骤:
- 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
- 对第0个到第n-1个数据做同样的工作。这时,最大的数就“浮”到了数组最后的位置上。
- 针对所有的元素重复以上的步骤,除了最后一个。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
选择排序 SelectionSort
选择排序是最直观的排序,就像我们现在有一副扑克牌,需要将它进行排序,如果我们要从小到大进行排序,那么,我们会先从中找到所有的A,其他牌的顺序不做处理,然后将A放在所有扑克牌的最上面,然后找到所有的2,重复这个过程,直到排序结束。
代码如下:
package study06_base;
public class SelectSort {
public static void main(String[] args) {
int[] arr = {1 ,2 ,5 ,7 ,3 ,9 ,4 ,0 ,6 ,8};
//从小到大排序
for (int i = 0 ; i < arr.length ; i++){
int index = i; // 最小元素下标,因为每次只用从尚未排序的数组中找最小值,所以让index = i
for (int j = i+1 ; j < arr.length ; j++){ // 遍历数组找到最小值
if (arr[j] < arr[index]){
index = j; // 标记此时找到的最小元素的下标
}
}
// 将找到的最小值放在未排序数组的最前端
int temp;
temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
for (int a:arr) {
System.out.print(a+" ");
}
System.out.println();
//从大到小排序
for (int i = 0 ; i < arr.length ; i++){
int index = i; // 最大元素下标,因为每次只用从尚未排序的数组中找最大值,所以让index = i
for (int j = i+1 ; j < arr.length ; j++){ // 遍历数组找到最大值
if (arr[j] > arr[index]){
index = j; // 标记此时找到的最大元素的下标
}
}
// 将找到的最大值放在未排序数组的最前端
int temp;
temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
for (int a:arr) {
System.out.print(a+" ");
}
}
}
步骤:
- 在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
- 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
- 以此类推,直到所有元素均排序完毕。