您的位置:首页 > 编程语言 > Java开发

【算法】Java中的常见排序Sort

2017-06-15 14:28 253 查看

排序

已实现排序

冒泡排序 bubbleSort

插入排序 insertSort

快速排序 quickSort

冒泡排序

/**
* @param arr
* @return
* @description 冒泡排序
* @author paul
* @date 2017年5月30日 下午9:49:35
* @update 2017年5月30日 下午9:49:35
* @version V1.0
*/
public static int[] bubbleSort(int[] arr) {
//数据长度只有1,则本身就是有序的
if (arr.length == 1)
return arr;
int temp;
for (int i=0; i<arr.length-1; i++) {
//没有进行交换表示数组已经为有序状态,可提前结束循环
boolean isOver = true;
for (int j=0; j<arr.length-1; j++) {
if (arr[j] > arr[j+1]) {
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
isOver = false;
}
}
if (isOver)
break;
}
return arr;
}


插入排序

/**
* @param arr
* @return
* @description 插入排序
* @author paul
* @date 2017年5月30日 下午10:09:52
* @update 2017年5月30日 下午10:09:52
* @version V1.0
*/
public static int[] insertSort(int[] arr) {
//数据长度只有1,则本身就是有序的
if (arr.length == 1)
return arr;
int temp;
for (int i=1; i<arr.length; i++) {
for (int j=i; j>0; j--) {
if (arr[j] < arr[j-1]) {
temp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = temp;
}
}
}
return arr;
}


快速排序

参考:《 啊哈!算法》

/**
* @param arr
* @return
* @description 快速排序
* @author paul
* @date 2017年5月30日 下午10:15:35
* @update 2017年5月30日 下午10:15:35
* @version V1.0
*/<
b27e
/span>
public static int[] quickSort(int[] arr, int left, int right) {
//数据长度只有1,则本身就是有序的
if (arr.length == 1)
return arr;
if (left > right)
return arr;
int i=left,j=right,temp=arr[left],t;//temp存的是基准数
while (i != j) {
//顺序很重要,先从右往左找
while (arr[j] >= temp && j > i)
j--;
//在从左往右找
while (arr[i] <= temp && i < j)
i++;
//交换两个数在数组中的位置
if (i < j) {
t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}
}
//最终将基准数归位
arr[left] = arr[i];
arr[i] = temp;
quickSort(arr, left, i - 1);
quickSort(arr, i + 1, right);
return arr;
}


未完待续…

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: