- 编写冒泡排序和选择排序
- 给一个乱序数组,使得奇数放在前面,偶数放在数组后面,并且保证奇偶数在原数组的相对位置不变
第一题、
//冒泡排序时间复杂度是O(n^2)
public static void bubbleSort(int[] arr) {
boolean didSwap;
for (int i = 0, len = arr.length; i < len - 1; i++) {
didSwap = false;//当给定的数组是排过顺序的,直接退出
for (int j = 0; j < len - i - 1; j++) {
//从小到大排序
if (arr[j + 1] < arr[j]) {
int temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
didSwap = true;
}
}
if (didSwap == false)
return;
}
}
//选择排序时间复杂度是O(n^2)
public static void selectSort(int[] arr) {
boolean didSwap;
for (int i = 0, len = arr.length; i < len; i++) {
for (int j = i + 1; j < len; j++) {
if (arr[i] > arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
第二题:
public static void arraySort(int[] a) {
int leng = a.length;
int i = 0, j;
while (i < leng) {
if (a[i] % 2 == 0) {
i++;
} else {
//此时的i指的是奇数
j = i + 1;
while (a[j] % 2 == 1) {
if (j == leng - 1) {
return;
}
j++;
}
//j指的是偶数
int temp = a[j];
while (j > i) {
a[j] = a[j - 1];
j--;
}
a[i] = temp;
}
}
System.out.println(Arrays.toString(a));
}