本文主要是【算法】——常用的排序方法的文章,如果有什么需要改进的地方还请大佬指出⛺️
作者简介:大家好,我是听风与他
☁️博客首页: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 stub
int 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