1、插入排序
int[] a = {56,58,57,52}
思路:比较57,取出57,与前面的数字比较,若前面数据大于循环数字,则前面的数字向后移,直到前面数字不大于循环数字或为a[0],将移出的循环数字(57)插入。
public void insertSort(int a[]){
int length=a.length; //数组长度
int j; //当前值的位置
int i; //指向j前的位置
int key; //当前要进行插入排序的值
//从数组的第二个位置开始遍历值
for(j=1;j<length;j++){
key=a[j];
i=j-1;
//a[i]比当前值大时,a[i]后移一位,空出i的位置,好让下一次循环的值后移
while(i>=0 && a[i]>key){
a[i+1]=a[i]; //将a[i]值后移
i--; //i前移
}//跳出循环(找到要插入的中间位置或已遍历到0下标)
a[i+1]=key; //将当前值插入 不是j,因为i可能已减过几次,且退出前多减了一次
}
}
2、冒泡排序
1 package com.sort;
2
3 //稳定
4 public class 冒泡排序 {
5 public static void main(String[] args) {
6 int[] a={49,38,65,97,76,13,27,49,78,34,12,64,1,8};
7 System.out.println("排序之前:");
8 for (int i = 0; i < a.length; i++) {
9 System.out.print(a[i]+" ");
10 }
11 //冒泡排序
12 for (int i = 0; i < a.length; i++) {
13 for(int j = 0; j<a.length-i-1; j++){
14 //这里-i主要是每遍历一次都把最大的i个数沉到最底下去了,没有必要再替换了
15 if(a[j]>a[j+1]){
16 int temp = a[j];
17 a[j] = a[j+1];
18 a[j+1] = temp;
19 }
20 }
21 }
22 System.out.println();
23 System.out.println("排序之后:");
24 for (int i = 0; i < a.length; i++) {
25 System.out.print(a[i]+" ");
26 }
27 }
28 }
复制代码