欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

数组排序算法

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

数组排序算法

(一)冒泡排序

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

算法实现:

 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 }