数组排序算法

数组排序算法

(一)冒泡排序

基本思想:对比相邻的元素值,如果满足条件就交换元素值,把较小的元素移动数组前面,较大的元素移动到数组后面
算法:
冒泡算法由双层循环实现,其中外层循环控制排序轮次,一般为排序的数组长度减一。而内层循环主要用于对比数组中每个临近元素的大小,以确定是否交换位置,对比和交换的次数随排序轮数而减少。

算法实现:

 1 public class Bubble {
 2     public static void main(String[] args){
 3         int[] array ={63,4,24,1,3,15};
 4         Bubble sorter = new Bubble();
 5         sorter.sort(array);
 6     }
 7     //冒泡排序
 8     public void sort(int[] array){
 9         for(int i=1;i<array.length;i++){  //排序轮次,数组长度-1
10             for(int j=0;j<array.length-i;j++){ //内层比较,每过一轮末尾少比较一个
11                 if(array[j]>array[j+1]){
12                     int temp =array[j];
13                     array[j]=array[j+1];
14                     array[j+1]=temp;
15                 }
16             }
17         }
18         showArray(array);
19     }
20     //显示数组元素
21     public void showArray(int[] array){
22         for(int i:array){
23             System.out.print(i+" ");
24         }
25     }
26 }

 

(二)直接选择排序

速度比冒泡排序快一些
基本思想:将指定排序位置与其他数组元素分别对比,如果满足条件就交换元素值。
举例:
初始值:63 4 24 1 3 15
第一轮:15 4 24 1 3 63
第二轮:15 4 3 1 24 63
第三轮:1 4 3 15 24 63
第四轮:1 3 4 15 24 63
第五轮:1 3 4 15 24 63
解释:首先找出6个数中最大的与最后一个数交换位置,然后在前5个数中找出最大的数与倒数第二个交换位置,这样length-1次

算法实现:

 1 public class Select {
 2     public static void main(String[] args){
 3         int array[]={63,4,24,1,3,15};
 4         Select sorter =new Select();
 5         sorter.sort(array);
 6     }
 7     //直接选择排序
 8     public void sort(int[] array){
 9         int index;
10         for(int i=1;i<array.length;i++){  //排序轮次仍为数组长度-1
11             index=0;
12             for(int j=1;j<=array.length-i;j++){ //内层比较,找出最大数的位置
13                 if(array[j]>array[index]){
14                     index=j;
15                 }
16             }
17             int temp=array[array.length-i];
18             array[array.length-i]=array[index];
19             array[index]=temp;
20         }
21         showArray(array);
22     }
23     //显示数组
24     private void showArray(int[] array) {
25         for(int i:array){
26             System.out.print(i+" ");
27         }
28     }
29 }

 

posted @ 2018-02-23 08:19  xtu熊大  阅读(2207)  评论(0编辑  收藏  举报