冒泡排序法
每次冒泡过程都是从数列的第一个元素开始,然后依次和剩余的元素进行比较,若小于相邻元素,则交换两者位置,同时将较大元素作为下一个比较的基准元素,继续将该元素与其相邻的元素进行比较,直到数列的最后一个元素
public class BubbleSort {
public static void main(String[] args) {
//声明一个长度为5的数组,并初始化
int[] arr={9,4,3,8,5};
int tmp=0;
//将arr 大->小 比较的次数
/* 0: arr[1]>arr[0] arr[2]>arr[1] arr[3]>arr[2] arr[4]>arr[3] 4
1: arr[1]>arr[0] arr[2]>arr[1] arr[3]>arr[2] 3
2: arr[1]>arr[0] arr[2]>arr[1] 2
3: arr[1]>arr[0] 1*/
//外循环
//控制趟数
for (int i = 0; i < arr.length-1; i++) {
//内循环
//控制俩俩比较的次数
for (int j = 0; j < arr.length-i-1; j++) {
if (arr[j+1]>arr[j]) {
tmp=arr[j+1];
arr[j+1]=arr[j];
arr[j]=tmp;
}
}
}
//输出arr
System.out.println(Arrays.toString(arr));
}
}
选择排序法
选择排序也是一种简单直观的排序算法,实现原理比较直观易懂:首先在未排序数列中找到最小元素,然后将其与数列的首部元素进行交换,然后,在剩余未排序元素中继续找出最小元素,将其与已排序数列的末尾位置元素交换。以此类推,直至所有元素圴排序完毕。
public class Sel2 {
public static void main(String[] args) {
//声明一个长度为5的数组,并初始化
int[] arr={9,2,8,4,5};
//存储当前的最大值的下标
int max=0;
//存储中间变量
int tmp=0;
//外循环
//趟数
for (int i = 0; i < arr.length-1; i++) {
//设置max
max=i;
//内循环
//比较的次数
for (int j = i+1; j < arr.length; j++) {
if (arr[j]>arr[max]) {
max=j;
}
}
//跟当初的约定是否一致
if (max!=i) {
tmp=arr[max];
arr[max]=arr[i];
arr[i]=tmp;
}
}
//输出arr
System.out.println(Arrays.toString(arr));
}
}