java算法总结-插入排序和归并排序
上一篇 /
下一篇 2016-02-23 10:47:02
/ 个人分类:java
//插入排序
public class insertSort {
public static int[] insertSort_1(int[] a){
if(a==null||a.length<2){
return a;
}
for(int i=0;i<a.length;i++){
for(int j=i;j>0;j--){
if(a[j]<a[j-1]){
int temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
}
}
}
return a;
}
public static void main(String[] args){
int a[]={12, 45, 2, 56, 1, 36, 4};
int b[]=insertSort_1(a);
for (int i=0;i<a.length;i++){
System.out.print(b[i]+" ");
}
}
}
//归并排序
- public class MergeSortTest {
-
- public static void main(String[] args) {
- int[] data = new int[] { 5, 3, 6, 2, 1, 9, 4, 8, 7 };
- print(data);
- mergeSort(data);
- System.out.println("排序后的数组:");
- print(data);
- }
-
- public static void mergeSort(int[] data) {
- sort(data, 0, data.length - 1);
- }
-
- public static void sort(int[] data, int left, int right) {
- if (left >= right)
- return;
-
- int center = (left + right) / 2;
-
- sort(data, left, center);
-
- sort(data, center + 1, right);
-
- merge(data, left, center, right);
- print(data);
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
- public static void merge(int[] data, int left, int center, int right) {
-
- int[] tmpArr = new int[data.length];
-
- int mid = center + 1;
-
- int third = left;
-
- int tmp = left;
- while (left <= center && mid <= right) {
-
- if (data[left] <= data[mid]) {
- tmpArr[third++] = data[left++];
- } else {
- tmpArr[third++] = data[mid++];
- }
- }
-
- while (mid <= right) {
- tmpArr[third++] = data[mid++];
- }
- while (left <= center) {
- tmpArr[third++] = data[left++];
- }
-
-
- while (tmp <= right) {
- data[tmp] = tmpArr[tmp++];
- }
- }
-
- public static void print(int[] data) {
- for (int i = 0; i < data.length; i++) {
- System.out.print(data[i] + "\t");
- }
- System.out.println();
- }
-
- }
收藏
举报
TAG:
java
JAVA
Java