四大排序方法
📑前言
本文主要是【算法】——常用的排序方法的文章,如果有什么需要改进的地方还请大佬指出⛺️
🎬作者简介:大家好,我是听风与他🥇
☁️博客首页:CSDN主页听风与他
🌄每日一句:狠狠沉淀,顶峰相见
目录
- 四大排序方法
- 📑前言
- 冒泡排序
- 选择排序
- 直接排序
- 直接插入排序
- 📑文章末尾
冒泡排序
排序样例数组
int num[] = {5,1,3,2,8,7};
public static void BubbleSort(int a[]) {int len = a.length;for(int i=0;i<len-1;i++) { //每一次冒泡出最大的数for(int j=0;j<len-1-i;j++) { //第二层for循环每次减少一次,随着排序if(a[j]>a[j+1]) { //最大的数冒泡在最后面int temp = a[j];a[j] = a[j+1];a[j+1] = temp;}}}}public static void main(String[] args) {// TODO Auto-generated method stubint num[] = {3,5,38,15,26,27,44,4,19,2,48,50};BubbleSort(num);for(int i:num) {System.out.print(i+" ");}}
运行结果:
1 3 2 5 7 8
1 2 3 5 7 8
1 2 3 5 7 8
1 2 3 5 7 8
1 2 3 5 7 8
选择排序
public static void selectSort(int a[]) {//每一次都跟最小的数进行交换,就会将序列变得有序int n = a.length;int min = 0; //min记载最小的数的下标for(int i=0;i<n-1;i++) {min = i;for(int j=i+1;j<n;j++) {if(a[min]>a[j]) {min = j;}}//如果min是i自己,则自身和自身交换,不影响结果int temp = a[min];a[min] = a[i];a[i] = temp;for(int t:a) {System.out.print(t+" ");}System.out.println();}}
运行结果:
1 5 3 2 8 7
1 2 3 5 8 7
1 2 3 5 8 7
1 2 3 5 8 7
1 2 3 5 7 8
直接排序
public static void DirectSort(int a[]) {int n = a.length;for(int i=0;i<n;i++) {for(int j=i;j<n;j++) {if(a[i]>a[j]) {int temp = a[i];a[i] = a[j];a[j] = temp;}}for(int t:a) {System.out.print(t+" ");}System.out.println();}}
运行结果:
1 5 3 2 8 7
1 2 5 3 8 7
1 2 3 5 8 7
1 2 3 5 8 7
1 2 3 5 7 8
1 2 3 5 7 8
直接插入排序
public static void InsertSort(int a[]) {int i,j,temp;int n = a.length;for(i=1;i<n;i++) {temp = a[i]; //temp记录每一次a[i]的值if(a[i]<a[i-1]) {for(j=i-1;j>=0&&a[j]>temp;j--) {a[j+1] = a[j]; //从前往后移动}a[j+1] = temp; //移动之后,a[i]进入空位}for(int t:a) {System.out.print(t+" ");}System.out.println();}}
运行结果:
1 5 3 2 8 7
1 3 5 2 8 7
1 2 3 5 8 7
1 2 3 5 8 7
1 2 3 5 7 8