排序要求
已知数组arr[]={5,6,9,2,4,3,1,8,7},要求按从小打到排序,排序后为{1,2,3,4,5,6,7,8,9}。
Java的三种简单排序算法
冒泡排序
冒泡排序(Bubble Sort)是一种计算机科学领域的较简单的排序算法。
原理:
1.比较相邻的元素,如果前一个元素比后一个元素大,就交换两个元素的位置。
2.对每一对相邻元素做同样的工作,从第一对元素开始到结尾的最后一对元素,最终最后位置的元素就是最大值。
选择排序
选择排序是一种更加简单直观的排序方法。
原理
1.每一次遍历的过程中,都假定第一个索引处的元素是最小值,和其他索引处的值依次进行比较,如果当前索引处的值大于其他某个索引处的值,则假定其他某个索引处的值是最小值,最后可以找出最小值所在的索引。
2.交换第一个索引处和最小值所在的索引处的值。
插入排序
插入排序(Insertion Sort)是一种简单直观且稳定的排序算法。
原理
1.把所有的元素分为两组,已经排序和未排序的。
2.找到未排序的组中的第一个元素,向已经排序的组中进行插入。
3.倒叙遍历已经排序的元素,依次和待插入的元素进行比较,直到找到一个元素小于等于待插入元素,那么就把待插入元素放到这个位置,其他元素向后移动一位。
具体实现
1.首先创建class类。
2.定义数组
public static void main(String[] args) {
int [] arr={5,6,9,2,4,3,1,8,7};//定义一个待排序的数组;
}
3.根据题目所描述从Java三种常用排序算法中选择合适的排序算法。
下面是满足上诉要求的三种算法(做题时选择一种即可)
(1).冒泡排序
public static void Bubble(int [] arr){ //定义方法实现冒泡排序;
int t;
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr.length-1;j++){
if (arr[j]>arr[j+1]){ //比较当前元素和下一个元素的大小;
t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
}
}
for (int i=0;i<arr.length;i++){ //输出结果;
System.out.print(arr[i]+" ");
}
}
(2).选择排序
public static void Selection(int [] arr){ //定义方法实现选择排序;
int min; //用于存储最小值元素索引;
int t;
for(int i=0;i<arr.length-1;i++){
min=i;
for (int j=i+1;j<arr.length;j++){ //寻找最小值元素及其索引;
if(arr[min]>arr[j]){
min=j;
}
}
t=arr[i];
arr[i]=arr[min];
arr[min]=t;
}
for (int i=0;i<arr.length;i++){ //输出结果
System.out.print(arr[i]+" ");
}
}
(3).插入排序
public static void Insertion(int [] arr){ //定义方法实现插入排序;
int t;
for(int i=1;i<arr.length;i++){
for(int j=i-1;j>=0;j--){ //倒叙比较元素大小实现插入
if(arr[j+1]<arr[j]){
t=arr[j+1];
arr[j+1]=arr[j];
arr[j]=t;
}
}
}
for (int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
}
4.通过主函数调用方法实现具体效果
public static void main(String[] args) {
int [] arr={5,6,9,2,4,3,1,8,7};//定义一个待排序的数组;
Bubble(arr); //调用冒泡排序方法;
System.out.println();
Selection(arr); //调用选择排序方法;
System.out.println();
Insertion(arr); //调用插入排序方法;
}
5具体排序后实现效果