java:四种int【】数据排序,冒泡,插入,选择,快速排序
也许上篇文章有的地方不能正常运行,所以来补充完整版的
package arraySort;
public class SortArr {
public static void main(String[] args) {
int[] arrInt = { 100, 2, 2, 334, 23, 42, 34, 2 };
maoPaoSort(arrInt);
print("冒泡排序:", arrInt);
arrInt = new int[] { 24, 324, 324, 2, 3 };
insertSort(arrInt);
print("插入排序:", arrInt);
arrInt = new int[] { 2, 32, 4, 3, 24, 2, 3 };
checkSort(arrInt);
print("选择排序:", arrInt);
arrInt = new int[] { 24, 32, 4, 3, 24, 2, 3 };
quicklySort(arrInt);
print("快速排序:", arrInt);
}
// 冒泡排序
private static void maoPaoSort(int[] arrInt) {
int temp = 0;
for (int i = 0; i < arrInt.length; i++) {
for (int j = 0; j < arrInt.length - 1; j++) {
if (arrInt[i] < arrInt[j]) {
temp = arrInt[i];
arrInt[i] = arrInt[j];
arrInt[j] = temp;
}
}
}
}
// 插入排序
private static void insertSort(int[] arrInt) {
/*
* //倒叙开始插入 for(int i=arrInt.length-2;i>=0;i--){ int j=0;
* for(j=arrInt.length-1;j>i;j--){ if(arrInt[i]>arrInt[j]) { break; } }
* int temp=arrInt[i]; for(int k=i;k<j;k++) { arrInt[k]=arrInt[k+1]; }
* arrInt[j]=temp; }
*/
// 正序开始插入
for (int i = 0; i < arrInt.length; i++) {
int j = 0;
for (j = 0; j < i; j++) {
if (arrInt[i] > arrInt[j]) {
break;
}
}
int temp = arrInt[i];
for (int k = i; k > j; k--) {
arrInt[k] = arrInt[k - 1];
}
arrInt[j] = temp;
}
}
// 选择排序
private static void checkSort(int[] arrInt) {
for (int i = 0; i < arrInt.length - 1; i++) {
int t = i;
for (int j = i + 1; j < arrInt.length; j++) {
if (arrInt[i] > arrInt[j]) {
t = arrInt[i];
arrInt[i] = arrInt[j];
arrInt[j] = t;
}
}
}
}
// 遍历
public static void print(String str, int[] arrInt) {
System.out.println(str);
// for (int i = 0; i < arrInt.length; i++) {
// System.out.println(arrInt[i]);
// }
for (int index : arrInt) {
System.out.println(index);
}
}
// 快速排序
public static void quicklySort(int[] arrInt) {
sort(arrInt, 0, arrInt.length - 1);
}
public static void sort(int[] array, int start, int end) {
if (start >= end) {
return;
}
int i = start;
int j = end + 1;
int s = array[start];
while (true) {
while (i < end && array[++i] < s)
;
while (j > start && array[--j] > s)
;
if (i >= j) {
break;
} else {
int tmp = array[i];
array[i] = array[j];
array[j] = tmp;
}
}
array[start] = array[j];
array[j] = s;
sort(array, start, j - 1);
sort(array, j + 1, end);
}
}