有为lala

导航

数组经典排序


  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 }

 

posted on 2017-05-15 22:10  有为lala  阅读(118)  评论(0编辑  收藏  举报