java算法 — 数组的简单排序
原创
©著作权归作者所有:来自51CTO博客作者咸咸瑜瑜的原创作品,请联系作者获取转载授权,否则将追究法律责任
下面讲解 冒泡法 和 选择法排序,,,忽略掉插入法排序,因为插入法排序和冒泡差不多且不好理解。
1.冒泡法,这个是最基本的排序算法,不说那么多 ,直接上源码:


package ch01;
import java.util.Scanner;
/**
* 冒泡法排序
*/
public class Bubbling {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long[] arr = new long[10];
for (int i = 0; i < arr.length; i++) {
arr[i] = sc.nextLong();
}
sort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
/**
* 冒泡 - 尾部往前冒。
* @param arr
*/
public static void sort(long[] arr) {
long t = 0;
for(int i = 0;i < arr.length - 1; i++){
for (int j = arr.length - 1;j > i; j--){
if (arr[j] < arr[j - 1]){
//交换
t = arr[j];
arr[j] = arr[j-1];
arr[j-1] = t;
}
}
}
}
}
冒泡排序
2.选择法排序是有 i j k ,,其中i 做外循环,j是 内循环变量, k 是标识,总是指向 最小(大) 的值。
源码:


package ch01;
/**
* 选择排序法
* 比 冒泡排序 交换的次数少 因此效率比冒泡高那么一点
*/
public class Select {
public static void main(String[] args) {
long[] arr = {3, 7, 5, 8, 4, 2, 1, 6, 9, 10}; //10个数据
sort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
public static void sort(long[] arr) {
int k = 0;
long temp = 0L;
for (int i = 0; i < arr.length - 1; i++) {
//外循环初始 k = i
k = i;
// 【j = i + 1】 少比较 1 次
for (int j = i + 1; j < arr.length; j++) {
/**
* 是在不懂请打开这个注释!!
* System.out.println("arr[i]" + arr[i]);
* System.out.println("arr[j]" + arr[j]);
* System.out.println("arr[k]" + arr[k]);
* System.out.println("==================");
*/
//j是会变的
if (arr[j] < arr[k]) {
//那么k指向的是最小的值
k = j;
}
}
//内循环结束 - 交换最小值
temp = arr[i];
arr[i] = arr[k];
arr[k] = temp;
}
}
}
选择法排序
实在看不懂打开里面的注释即可。
作者:咸瑜