【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     }

 

posted @ 2020-09-19 14:16  gtea  阅读(151)  评论(0编辑  收藏  举报