常用的排序算法有冒泡排序,选择排序,插入排序。其中插入排序难度较大。
import java.util.Scanner;
public class Thor {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int temp;
int[] num = {12, 13, 1, 10, 48, 14, 68, 5};
ChoiceSort(num);
System.out.println();
MaopaoSort(num);
System.out.println();
InsertSort(num);
}
// 冒泡排序
public static int[] MaopaoSort(int[] num) {
int temp;
for(int i = 0; i < num.length - 1; i++) {
for(int j = i + 1; j < num.length; j++) {
if(num[j] < num[i]) {
temp = num[i];
num[i] = num[j];
num[j] = temp;
}
}
}
for(int i = 0; i < num.length; i++) {
System.out.print(num[i] + "\t");
}
return num;
}
// 选择排序
public static int[] ChoiceSort(int[] num) {
int temp;
for(int i = 0; i < num.length - 1; i++) {
int min_index = i;
for(int j = i + 1; j < num.length; j++) {
if(num[j] < num[min_index]) {
min_index = j;
}
}
temp = num[i];
num[i] = num[min_index];
num[min_index] = temp;
}
for(int i = 0; i < num.length; i++) {
System.out.print(num[i] + "\t");
}
return num;
}
//插入排序
public static int[] InsertSort(int[] num) {
int temp, j, i;
for (int i = 1; i < score.length; i++ ){
for (int j = i; j > 0; j-- ){
if (score[j] > score[j-1]){
temp = num[j];
num[j] = num[j - 1];
num[j - 1] = temp;
}
}
for(i = 0; i < num.length; i++) {
System.out.print(num[i] + "\t");
}
return num;
}
}
下面这种算法也是插入排序,思路与上面的方法有所不同,但是比上面的算法不好理解。下面这种思路就是每次遍历到的数字就像排序一样,大的直接覆盖到右边,最后剩下的那个空位置(也就是满足条件的位置),把遍历到的数字插入进去。
/插入算法
for(i = 1; i < num.length; i++) {
temp = num[i];
for(j = i - 1; j >= 0; j--) {
if(temp > num[j]) {
break;
}
else {
num[j + 1] = num[j];
}
}
num[j + 1] = temp;
}