• 数组经典排序



      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] + "	");
    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 }
  • 相关阅读:
    CodeForces 383C-dfs序-线段树
    poj-3321-dfs序-线段树-邻接表
    poj2528-Mayor's posters-线段树离散化、基础
    hdu3333-Turing Tree-线段树+离线+离散化
    poj 1151-atlantis-线段树扫描线求面积并
    Changes favor the connective minds.
    HDU 4800/zoj 3735 Josephina and RPG 2013 长沙现场赛J题
    HDU 1203 I NEED A OFFER! 01背包
    hdu 1175 连连看 DFS
    Codeforces Round #208 (Div. 2) 358D Dima and Hares
  • 原文地址:https://www.cnblogs.com/123456lala/p/6858749.html
Copyright © 2020-2023  润新知