选择排序算法与冒泡排序算法
1. 选择排序算法(Selection Sort)
选择排序分为直接选择排序,树形选择排序(锦标赛排序)和堆排序。这里只介绍最简单的直接选择排序。
直接选择排序的算法思想是:(设共有n个元素进行排序)
第一轮先n个元素进行比较,最终将这n个元素的最大值/最小值放在最前/最后
第二轮再对接下来的n-1个元素进行比较,从中选出最大值/最小值放在最前/最后
以此类推,经过n-1伦的比较完成排序
示例:对数组int arr[] = { 1,5,-8,46,6,74,78,20}进行排序,以升序为例
1 5 -8 46 6 74 78 20
第一轮: -8 5 1 46 6 74 78 20
第二轮: 1 5 46 6 74 78 20
第三轮: 5 46 6 74 78 20
第四轮: 6 46 74 78 20
第五轮: 20 74 78 46
第六轮: 46 78 74
第七轮: 74 78
代码展示:
class sortBySelect{
public static voidmain(String[] args){
int[] arr = new int[]{1,5,-8,46,6,74,78,20};
for(int i=0;i<arr.length-1;i++){
for(intj=i;j<arr.length-1;j++){
if(arr[i]>arr[j+1]){
inttemp = arr[j+1];
arr[j+1]= arr[i];
arr[i]= temp;
}
}
}
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+",");
}
}
}
运行结果:
2. 冒泡排序算法(Selection Sort)
冒泡排序算法的算法思路是:(以升序为例)
从第一个元素开始进行两两比较,如果前面的值大于后面的值则交换两元素的位置;依次经过n-1伦的比较后,最大值依次被排列在最后,最终实现升序的排序。
示例:对数组int arr[] = { 1,5,-8,46,6,74,78,20}进行排序,以升序为例
1 5 -8 46 6 74 78 20
第一轮: 1 -8 5 6 46 74 20 78
第二轮: -8 1 5 6 46 20 74
第三轮: -8 1 5 6 20 46
第四轮: -8 1 5 6 20
第五轮: -8 1 5 6
第六轮: -8 1 5
第七轮: -8 1
代码展示:
class sortByBubble {
publicstatic void main(String[] args) {
int[]arr = new int[] { 2, 34, 123, 3, 314, 4, 3, 6, 2, -3, 9 };
sortByBubble(arr);
}
publicstatic void sortByBubble(int[] a) {
intlength = a.length;
for(int i = 0; i < length - 1; i++) {
for(int j = 0; j < length - 1 - i; j++) {
if(a[j] < a[j + 1]) {
inttemp = a[j];
a[j]= a[j + 1];
a[j+ 1] = temp;
}
}
}
for(int i = 0; i < length; i++) {
System.out.print(a[i]+ ",");
}
}
}
运行结果: