三种经典算法的实现如下:注意过程可能与网上的不一样,但是结果是对的。自己思考出来的,比较容易理解。
package com.company;
class ArrayUtils {
public static void printArray(int[] array) {
for (int i = 0; i < array.length; i++) {
System.out.print(array[i]);
if (i < array.length - 1) {
System.out.print(" ");
}
}
System.out.println(" "); //输出数列的各个值,中间有空格。后续频繁调用
}
}
public class SortTest {
public static void main(String[] args) {
int[] array = {5, 99, 0, 2, -44, 66,5,777, 897, 77, 1, 4444, 8};
ArrayUtils.printArray(array);
insertSort(array);
// selectSort(array);
// bubbleSort(array);
ArrayUtils.printArray(array);
}
public static void insertSort(int[] array) {
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < i; j++) {
if (array[i] < array[j]) {
int t = array[i];
array[i] = array[j];
array[j] = t;
} //插入排序算法:注意先固定外层循环的数值,j从已经排序好的部分的头开始比较,大于则互相替换
}
}
}
}
/*
public static void selectSort(int []array){
for(int i=0;i<array.length;i++){
for (int j=i+1;j<array.length;j++){
if(array[i]>array[j]){
int k=array[i];
array[i]=array[j];
array[j]=k;
} // 选择排序算法,注意先固定外层循环的数值,选第一个与后面比较,先选出最小的数,以此类推,选出第二小的数
}
}
}
*/
/* public static void bubbleSort(int []array){
for(int i=0;i<array.length;i++){
for(int j=0;j<array.length-1-i;j++){
if(array[j]>array[j+1]){
int k=array[j];
array[j]=array[j+1];
array[j+1]=k;
} //冒泡排序算法,注意先固定外层循环的数值,先选出最大的数,固定在最后一位。
}
}
}
*/