Java中的几种排序算法
Posted SSimeng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中的几种排序算法相关的知识,希望对你有一定的参考价值。
一、冒泡排序
(1)冒泡排序的思想
- 每次都将当前元素和下一个元素进行比较,如果第一个比第二个大,就交换他们两个。
- 比较每一趟中的每两个相邻的元素。这样一趟下来最大的最大的数就在最后面
- 一共进行n-1趟比较,每趟都重复比较操作,比较相邻的元素。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
(2)冒泡排序的实现
/**
* 冒泡排序
*/
public static int[] bubbleSort(int[] a) {
int n =a.length;//数组的长度
for(int i=0;i<n;i++)//一共 要进行n-1趟,
for(int j=0;j<n-i-1;j++) {
if(a[j]>a[j+1]) {
//将大的放到后面
int b=a[j];
a[j]=a[j+1];
a[j+1]=b;
}
}
return a;
}
结果:
二、选择排序
(1)选择排序的思想
- 找到数组中元素最小值的位置,记录下标,然后将最小值的位置与0位置交换.
- 进行第二轮排序,找出第二小的数的下标,将其与第1位置交换。
- 重复上述步骤,直到所有元素的位置正确,选择排序结束。
(2)选择排序的实现
/**
* 选择排序
*/
public static int [] selectSort(int[] arr){
for(int i = 0; i < arr.length-1; i++){
int min = i;//存放最小值的下标
for(int j = i+1; j <arr.length ;j++){
if(arr[j]<arr[min]){
min = j;
}
}
if(min!=i){
//交换顺序,将最小值与i位置交换
int temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
}
return arr;
}
结果:
三、插入排序
(1)插入排序的思想
插入排序算法类似于扑克牌游戏的抓拍和整理过程。在开始摸牌时,左手是空的。接着,每次从桌上摸牌时,都根据牌的大小在左手扑克牌序列中从右向左比较,在找到第一个比该扑克牌大的位置时就将该扑克牌插入该位置的左侧,这样以此类推,无论什么时候,左手中的牌都是排好序的。
(2)插入排序的实现
/**
* 插入排序
* @param arr
* @return
*/
public static int[] insertSort(int[] arr) {
for (int i = 1; i < arr.length; i++) {
int insertVal = arr[i];//插入的数
int index = i - 1;//被插入的位置,与前一个进行比较
//插入的数比被插入的数小,满足插入条件
while (index >= 0 && insertVal < arr[index]) {
arr[index + 1] = arr[index];//将index后的元素向后移动
index--;//跳出循环
}
arr[index + 1] = insertVal;//将值插入到该插入的位置中去
}
return arr;
}
结果:
以上是关于Java中的几种排序算法的主要内容,如果未能解决你的问题,请参考以下文章
Java中的几种排序算法:冒泡排序,插入排序,二分法排序,简单排序,快速排序