
直接插入排序: 将数组分为两个子表 ,前边是有序子表,后边是待排序子表,每次将一个带排序的关键字插入到前边已经排序好的序列之中,直至全部记录插入完成为止;
package Sort;
public class InsertSort { //直接插入排序
public static void main(String[] args) {
//定义一个数组
int[] arr = {24, 69, 57, 13};
System.out.println("排序前:" + arrayToString(arr));
System.out.println("排序前:" + arrayToString(Insert(arr)));
}
public static String arrayToString(int[] arr) { //输出列表方法
StringBuilder sb = new StringBuilder();
sb.append("[");
for (int i = 0; i < arr.length; i++) {
if (i == arr.length - 1) {
sb.append(arr[i]);
} else {
sb.append(arr[i] + ",");
}
}
sb.append("]");
String s = sb.toString();
return s;
}
public static int[] Insert(int[] arr) { // 直接插入排序
for (int i = 1; i < arr.length; i++) { //从第二个元素开始
int temp = arr[i];
int j;
for (j = i; j > 0; j--) {
if (arr[j - 1] > temp) {
arr[j] = arr[j - 1];
} else break;
}
arr[j] = temp;
}
return arr;
}
}
折半
冒泡排序 : 属于交换排序:从前往后(从后往前)不断与相邻的关键字比较若大于相邻的(小于)则交换,直至一趟循环没有产生交换,即为排序成功;
package Sort;
public class MaoPaoSort { //冒泡排序
public static void main(String[] args) {
//定义一个数组
int[] arr = {24, 69, 57, 13};
System.out.println("排序前:" + arrayToString(arr));
System.out.println("排序前:" + arrayToString(Bubble(arr)));
}
public static String arrayToString(int[] arr) { //输出列表方法
StringBuilder sb = new StringBuilder();
sb.append("[");
for (int i = 0; i < arr.length; i++) {
if (i == arr.length - 1) {
sb.append(arr[i]);
} else {
sb.append(arr[i] + ",");
}
}
sb.append("]");
String s = sb.toString();
return s;
}
public static int[] Bubble(int[] arr) { //冒泡排序
for (int i = 0; i < arr.length - 1; i++) {
boolean falg = false;
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int q = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = q;
falg = true;
}
}
if (falg = false) {
break;
}
}
return arr;
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)