排序算法java源代码_各种排序算法JAVA实现

public class Sort {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

int[] arry = { 19, 10, 5, 45, 100, 30, 35, 29 };

int[] sortArry = mergeSort(arry);

for (int i = 0; i < sortArry.length; i++) {

System.out.println(sortArry[i]);

}

}

/**

* 前后颠倒顺序

*

* @param arry

* @param i

* @param j

*/

private static void swap(int[] arry, int i, int j) {

int temp = arry[i];

arry[i] = arry[j];

arry[j] = temp;

}

/**

* 冒泡排序

*

* @param arry

* @return

*/

private static int[] bubbleSort(int[] arry) {

for (int i = 0; i < arry.length; i++) {

for (int j = 0; j < arry.length - i - 1; j++) {

if (arry[j] > arry[j + 1]) {

swap(arry, j, j + 1);

}

}

}

return arry;

}

/**

* 插入排序

*

* @param arry

* @return

*/

private static int[] insertSort(int[] arry) {

for (int i = 0; i < arry.length; i++) {

for (int j = i; j > 0 && arry[j] < arry[j - 1]; j--) {

swap(arry, j, j - 1);

}

}

return arry;

}

/**

* 快速排序

*

* @param data

* @param i

* @param j

*/

private static int[] quickSort(int[] arry) {

return arry;

}

/**

* 选择排序

*

* @param arry

* @return

*/

private static int[] selectionSort(int[] arry) {

for (int i = 0; i < arry.length; i++) {

int lowIndex = i;

for (int j = arry.length - 1; j > i; j--) {

if (arry[j] < arry[lowIndex]) {

lowIndex = j;

}

}

swap(arry, i, lowIndex);

}

return arry;

}

/**

* 归并排序

*

* @param arry

* @param temp

* @param l

* @param r

*/

private static void sort(int[] arry, int[] temp, int l, int r) {

int mid = (l + r) / 2;

if (l == r) {

return;

}

sort(arry, temp, l, mid);

sort(arry, temp, mid + 1, r);

for (int i = l; i <= r; i++) {

temp[i] = arry[i];

}

int i1 = l;

int i2 = mid + 1;

for (int cur = l; cur <= r; cur++) {

if (i1 == mid + 1) {

arry[cur] = temp[i2++];

} else if (i2 > r) {

arry[cur] = temp[i1++];

} else if (temp[i1] < temp[i2]) {

arry[cur] = temp[i1++];

} else {

arry[cur] = temp[i2++];

}

}

}

private static int[] mergeSort(int[] data) {

int[] temp = new int[data.length];

sort(data, temp, 0, data.length - 1);

return data;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值