【Java学习】相关基础算法
冒泡排序
原理:比较两个相邻的元素,将值大的元素交换至右端,然后在剩下数中比较两个相邻的元素,将值大的元素交换到剩下数的右端,直到所有的数排好序。
思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直至全部排序完成。
N个数字要排序完成,总共进行N-1趟排序,每i趟的排序次数为(N-i)次,所以可以用双重循环语句,外层控制循环多少趟,内层控制每一趟的循环次数。
冒泡排序的优点:每进行一趟排序,就会少比较一次,因为每进行一趟排序都会找出一个较大值。如上例:第一趟比较之后,排在最后的一个数一定是最大的一个数,第二趟排序的时候,只需要比较除了最后一个数以外的其他的数,同样也能找出一个最大的数排在参与第二趟比较的数后面,第三趟比较的时候,只需要比较除了最后两个数以外的其他的数,以此类推……也就是说,没进行一趟比较,每一趟少比较一次,一定程度上减少了算法的量。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
public static void main(String[] args) { int array[] = { 6 , 3 , 8 , 2 , 9 , 1 }; for ( int i= 0 ;i<array.length;i++) { for ( int j= 0 ;j<array.length- 1 -i;j++) {<br> if (array[j] > array[j+ 1 ]) { int temp; temp = array[j+ 1 ]; array[j+ 1 ] = array[j]; array[j] = temp; } } } for ( int x:array){ System.out.println(x); } }
|
选择排序
原理:找到一个最小数交换到最前面,然后剩下数中找到最小数交换到剩下数最前面,一直重复此步骤,知道所有数排好
1 public int[] selectSortArray(int[] arr){ 2 //选择排序 原理:找到最小数交换到最前面 3 int n = arr.length; 4 for (int i = 0; i < n-1; i++) { 5 int min_index = i; 6 for (int j = i+1; j < n; j++) { 7 if (arr[j] < arr[min_index]) { 8 min_index = j; 9 } 10 if (i != min_index) { 11 int temp = arr[i]; 12 arr[i] = arr[min_index]; 13 arr[min_index] = temp; 14 15 } 16 } 17 } 18 return arr; 19 }
作者:gtea
博客地址:https://www.cnblogs.com/gtea