1.冒泡排序
1.1冒泡排序流程(思想-相邻进行比较‘沉底操作’)
- 对数组中的元素,依次进行比较相邻两个元素的大小
- 如果前面的元素大于后面的元素,就交换这两个数据。经过第一轮的多次比较排序后,就可以将数组中最大的元素进行‘沉底’操作,将数组中最大的一个元素放在数组中最后的一个位置
- 再用同样的方法进行‘沉底’操作,不过这回比较的就是排除最后一个位置的数组元素,剩余的元素进行比较即可
1.2冒泡排序代码
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int [] data = new int[n];
int temp;
for (int i = 0; i < n ; i++) {
data[i] = sc.nextInt();
}
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
if (data[j]>data[j+1]) {
temp = data[j];
data[j] = data[j + 1];
data[j + 1] = temp;
}
}
}
for (int i:data){
System.out.print(i+" ");
}
}
}
2.选择排序
2.1选择排序流程(思想-在合适的位置放合适的元素)
- 首先从原始数组中选择最小的1个数据,将其和位于第一个位置的数据交换
- 接着从剩下的n-1个数据中选择最小的一个数据与第二个位置的元素进行交换
- 然后不断重复上述过程,直到剩余最后一个元素(剩余的最后一个元素就是则会个数组中最大的一个元素)
2.2选择排序代码
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n =sc.nextInt();
int [] date = new int[n];
int temp;
for (int i = 0; i < n ; i++) {
date[i] = sc.nextInt();
}
for (int i = 0; i < n-1 ; i++) {
for (int j = i+1; j < n; j++) {
if (date[i]>date[j]){
temp = date[i];
date[i] = date[j];
date[j] = temp;
}
}
}
for (int i: date){
System.out.print(i+" ");
}
}
}
3.插入排序
3.1选择排序流程(思想-默认已有一个已排完的数组,之后的元素进行插入)
- 默认数组中的第一个元素是已经排完顺序的数组,之后数组中的元素皆为要进行插入的元素
- 之后由第二个元素进行依次与已经排好顺序的数组元素进行比较,选择合适的位置进行插入
- 循环2过程直到最后一个元素插入
3.2选择排序代码
import java.util.Scanner;
public class Test3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int [] date = new int[n];
for (int i = 0; i < n; i++) {
date[i] = sc.nextInt();
}
for (int i = 1; i < date.length; i++) {
int temp = date[i];
int j = i-1;
while (j>=0 && temp<date[j]){
date[j+1] = date[j];
j--;
}
date[j+1] = temp;
}
for (int i:date){
System.out.print(i+" ");
}
}
}