冒泡排序
public class BubbleSort {
public static int[] Sort(int[] a) {
int len = a.length;
for (int i = 1; i <= len - 1 ; i++) {
for (int j = 0; j < len - i; j++) {
if (a[j] > a[j + 1]) {
Swap.swap(a, j + 1, j);
}
}
}
return a;
}
/*及时终止的冒泡排序*/
public static int[] Sort2(int[] a) {
int len = a.length;
boolean sorted = true;
for (int i = 1; !sorted && i <= len - 1 ; i++) {
sorted = true;
for (int j = 0; j < len - i; j++) {
if (a[j] > a[j + 1]) {
Swap.swap(a, j + 1, j);
sorted = false;
}
}
}
return a;
}
}
选择排序
public class SelectSort {
public static int[] Sort(int[] a) {
int len = a.length;
for (int i = 0; i < len; i++) {
int index = getMinIndex(a, i);
/* 当i!=index才进行元素交换 */
/* 交换元素 */
if (i != index) {
Swap.swap(a, i, index);
}
}
return a;
}
/**
* 获取响应范围中数组的最小值索引
*
* @param a
* 数组
* @param startIndex
* 起始位置
* @return 最小值的位置
*/
private static int getMinIndex(int[] a, int startIndex) {
int len = a.length;
int minValue = a[startIndex];
int minIndex = startIndex;
for (int i = startIndex + 1; i < len; i++) {
if (minValue > a[i]) {
/*出错地方,minValue应及时更新*/
minValue = a[i];
minIndex = i;
}
}
return minIndex;
}
}