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 }
複製代碼