数组经典排序
1.选择排序原理
a.将数组中每个元素与第一个元素比较,如果这个元素小于第一个元素,则交换这俩个元素的位置
b.循环第一条规则,找出最小元素,防于第一个位置
c.经过N-1轮比较完成排序
1 package paixu; 2 3 /** 4 * 选择排序 5 */ 6 import java.util.Scanner; 7 8 public class zy2 { 9 public static void main(String[] args) { 10 Scanner input = new Scanner(System.in); 11 System.out.print("请输入输入数字的位数:"); 12 int c = input.nextInt(); 13 int[] a = new int[c]; 14 for (int i = 0; i < a.length; i++) { 15 System.out.print("请输入输第" + (i + 1) + "位数字:"); 16 a[i] = input.nextInt(); 17 } 18 int temp = 0; 19 for (int i = 0; i < a.length; i++) { 20 for (int j = i + 1; j < a.length; j++) { 21 if (a[i] > a[j]) { 22 temp = a[i]; 23 a[i] = a[j]; 24 a[j] = temp; 25 } 26 } 27 } 28 for (int i = 0; i < a.length; i++) 29 System.out.print(a[i] + " "); 30 } 31 }
2.冒泡排序原理
a.逐一比较数组中相邻的两个元素,如果后面的元素小于前面的元素就互换
b.经过一轮比较,一定有一个最大的排在最后的位置
c.每一次比较剩下的元素,经过N-1次比较可以实现排序
1 package paixu; 2 3 /** 4 * 冒泡排序 5 */ 6 7 public class zy1 { 8 public static void main(String[] args) { 9 int[] sz = { 8, 6, 5, 4, 3, 1, 2 }; 10 int bl = 0; 11 for (int i = 0; i < sz.length - 1; i++) { 12 for (int j = 0; j < sz.length - 1 - i; j++) { 13 if (sz[j] > sz[j + 1]) { 14 bl = sz[j]; 15 sz[j] = sz[j + 1]; 16 sz[j + 1] = bl; 17 } 18 } 19 } 20 for (int i = 0; i < sz.length; i++) { 21 System.out.print(sz[i] + "\t"); 22 } 23 } 24 25 }
3.插入排序原理
a.将数组分为两部分,将后部分的第一张逐一与前部分每一张比较,如果当前元素小,就移动被比较的元素
b.找到合理位置插入
1 package paixu; 2 3 /** 4 * 插入排序 5 */ 6 public class zy3 { 7 public static void main(String[] args) { 8 int[] sz = { 1, 9, 5, 2, 7, 4 }; 9 for (int i = 1; i < sz.length; i++) { 10 int temp = sz[i]; 11 int j; 12 for (j = i - 1; j >= 0; j--) { 13 if (temp < sz[j]) { 14 sz[j + 1] = sz[j];// 元素向后移动 15 } else { 16 break; 17 } 18 } 19 sz[j + 1] = temp;// 找到合适的位值插入元素 20 } 21 for (int i = 0; i < sz.length; i++) { 22 System.out.print(sz[i] + " "); 23 } 24 } 25 }