基本算法排序
程序员文章站
2022-07-10 21:22:49
基本算法排序基本算法排序选择排序冒泡排序插入排序基本算法排序基本排序算法:选择排序、冒泡排序、插入排序高级选择排序:快速排序、归并排序选择排序选择排序的逻辑:外层循环从首位向后,来控制要确定的位置;内层循环从外层循环的下一位位置开始,往后遍历;外层循环的位置和内层循环位置的值进行循环比较;内层u想你换比较完-轮,可以找到一个最值;将该最值与外层循环的值交换。案例:public class Test0 {public static void main(String[...
基本算法排序
基本排序算法:选择排序、冒泡排序、插入排序
高级选择排序:快速排序、归并排序
选择排序
选择排序的逻辑:
外层循环从首位向后,来控制要确定的位置;
内层循环从外层循环的下一位位置开始,往后遍历;
外层循环的位置和内层循环位置的值进行循环比较;
内层u想你换比较完-轮,可以找到一个最值;
将该最值与外层循环的值交换。
案例:
public class Test0 {
public static void main(String[] args) {
/**选择排序逻辑:
* 从前向后对每个下标对应的元素作为基准位
* 与后面所有的元素进行比较,找出最小值
* 与当前下标的元素进行交换
* 进行下一次循环
*/
int[] a = {1, 3, 2, 5, 8, 4};
for (int i = 0; i < a.length - 1; i++) {
int min = a[i];
int temp = i;
for (int j = i+1 ; j < a.length; j++) {
if (min > a[j]) {
min = a[j];
temp = j;
}
}
a[temp] = a[i];
a[i] = min;
}
System.out.println(Arrays.toString(a));
}
}
冒泡排序
冒泡排序逻辑:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
用二重循环实现冒泡排序
用二重循环将5个数字升序排序步骤:
1、5个数字如何存放
数组,数组.length = 5
2、控制比较多少轮
外层循环,循环变量 i
3、控制每轮比较多少次
内层循环,循环变量 j
4、交换数据
冒泡排序速记口诀(升序)
* N 个数字来排队
* 两两相比小靠前
* 外层循环 N-1
* 内层循环 N-1-I
案例:使用冒泡排序对输入的5名学员成绩进行降序排列
public class Test1 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入5名学员的成绩:");
int[] a=new int[5];
for (int i = 0; i < a.length; i++) {
a[i]=sc.nextInt();
}
System.out.print("学员成绩按降序排列:");
for (int i = 0; i <a.length-1 ; i++) {
for (int j = 0; j <a.length-1-i; j++) {
if (a[j+1]>a[j]){
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
System.out.println(Arrays.toString(a));
}
}
插入排序
插入排序的逻辑:
外层循环从首位循环到末位-1的位置;
内层循环与插入的逻辑相同。
案例:
public class lx0_1 {
public static void main(String[] args) {
/*
逻辑:从第二位开始,向前比较,进行插入逻辑
*/
int[] a={1, 3, 2, 5, 8, 4};
for (int i = 0; i <a.length ; i++) {
int temp=a[i];
boolean isInsert=false;
for (int j =i-1; j >=0 ; j--) {
//如果遇到比自己大的,大的值就后移
if (temp<a[j]){
a[j+1]=a[j];
}else {//如果遇到比自己小的,就在后方插入
a[j+1]=temp;
isInsert=true;
break;
}
}
//如果一直没插入,就插入在首位
if (!isInsert){
a[0]=temp;
}
}
System.out.println(Arrays.toString(a));
}
}
本文地址:https://blog.csdn.net/qianchun22/article/details/107362569