第一种:冒泡排序算法
首先呢,先看下它的原理
由此可以看出,总数据长度为N,N个数字要完成排序,总共要进行N-1趟排序,第i趟的排序次数为(N-i)次;
java中最常见的方法是双层for循环进行排序。
外层控制总共要进行的趟数,内层控制第几趟的数据内部的排序次数。
public static void main(String[] args) {
int a[] = {6,3,8,2,9,1};
for (int i = 0; i < a.length-1; i++) {
for (int j = 0; j < a.length-1-i; j++) {
if(a[j]>a[j+1]){
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
//排序后的数组顺序为
for (int res : a) {
System.out.print(" "+res);
}
}
ps:由于数组外层是从0开始遍历的,所以第二趟的时候i为1,第二趟的排次数为6-(1-1),第三趟i为2,第三趟的排序次数为6-(2+1)。
第二种:选择排序算法
同理,我们先来看下原理,意思每次从现有数据挑出一个最小的直接放在最前面,第二次再将剩余的数据进行排序,拿出最小的放在最前面,以此类推。
举例:数组 int[] arr={5,2,8,4,9,1};
-------------------------------------------------------
第一趟排序: 原始数据:5 2 8 4 9 1
最小数据1,把1放在首位,也就是1和5互换位置,
排序结果:1 2 8 4 9 5
-------------------------------------------------------
第二趟排序:
第1以外的数据{2 8 4 9 5}进行比较,2最小,
排序结果:1 2 8 4 9 5
-------------------------------------------------------
第三趟排序:
除1、2以外的数据{8 4 9 5}进行比较,4最小,8和4交换
排序结果:1 2 4 8 9 5
-------------------------------------------------------
第四趟排序:
除第1、2、4以外的其他数据{8 9 5}进行比较,5最小,8和5交换
排序结果:1 2 4 5 9 8
-------------------------------------------------------
第五趟排序:
除第1、2、4、5以外的其他数据{9 8}进行比较,8最小,8和9交换
排序结果:1 2 4 5 8 9
-------------------------------------------------------
由此可以看出,N个数据,要进行N-1趟排序,把0索引的元素,和索引1以后的元素都进行比较,第一次完毕,最小值出现在了0索引。同理,其他的元素就可以排好。
外层控制总共要排序的趟数,内层表示要和下标为X的数据比较数组值。
/**
* 排序算法
* @param args
*/
public static void main(String[] args) {
int a[] = {6,3,8,2,9,1};
//外层控制总共要进行排序的趟数
for (int x = 0; x < a.length-1; x++) {
//内层表示要和下标为X的数据比较数组值
for (int y = x+1; y < a.length; y++) {
if(a[x]>a[y]){
int temp = a[y];
a[y] = a[x];
a[x] = temp;
}
}
}
//排序后的数组顺序为
for (int res : a) {
System.out.print(" "+res);
}
}
第二种:插入排序算法1
算法原理:所谓插入排序法乃是将一个数目插入该占据的位置。
所以,有N个数,则要进行N-1趟排序,