随机数 插入排序

排序

1)选择排序:

2)冒泡排序:

3)插入排序:
排序过程的某一中间时刻,R被划分成两个子区间R[1..i-1](已排好序的有序区)和
R[i..n](当前未排序的部分,可称无序区)。
插入排序的基本操作是将当前无序区的第1个记录R[i]插人到有序区R[1..i-1]中适当的
位置上,使R[1..i]变为新的有序区。因为这种方法每次使有序区增加1个记录,通常称增量法。
插入排序与打扑克时整理手上的牌非常类似。摸来的第1张牌无须整理,此后每次从桌上的
牌(无序区)中摸最上面的1张并插入左手的牌(有序区)中正确的位置上。为了找到这个正确
的位置,须自左向右(或自右向左)将摸来的牌与左手中已有的牌逐一比较。

package test06;
import java.util.Random;
import java.util.Scanner;
public class SortNu {
    public static void main(String[] args) {
        int n;
        Scanner r = new Scanner(System.in);
        n = r.nextInt();
        int[] j = new int[n];
        for (int i = 0; i < n; i++) {
            Random m = new Random();
            j[i] = m.nextInt(20);
            System.out.print("\t" + j[i]);
        }
        Selection(j);
        for (int i = 0; i < n; i++) {
            System.out.print("\t" + j[i]);
        }
        System.out.println(' ');
        System.out.println("------------------------------------------------------------");
        for (int i = 0; i < n; i++) {
            Random m = new Random();
            j[i] = m.nextInt(20);
            System.out.print("\t" + j[i]);
        }
        Bubble(j);
        for (int i = 0; i < n; i++) {
            System.out.print("\t" + j[i]);
        }
        System.out.println(' ');
        System.out.println("------------------------------------------------------------");
        for (int i = 0; i < n; i++) {
            Random m = new Random();
            j[i] = m.nextInt(20);
            System.out.print("\t" + j[i]);
        }
        Insertion(j);
        for (int i = 0; i < n; i++) {
            System.out.print("\t" + j[i]);
        }
        System.out.println(' ');
    }
    public static void Selection(int[] j) {
        for (int i = 0; i <j.length-1; i++) {
            for (int t = i+1 ; t < j.length; t++) {
                if (j[i] > j[t]) {
                  int  n = j[i];
                    j[i] = j[t];
                    j[t] = n;
                }
            }
        }
        System.out.println(" ");
        System.out.println("这是选择排序");
    }
    public static void Bubble(int[] j) {

        for (int i = 0; i < j.length-1; i++) {
            for (int t = 0 ; t < j.length-i-1; t++) {
                if (j[t] >j[t+1]) {
                  int  n = j[t+1];
                    j[t+1] = j[t];
                    j[t] = n;
                }
            }
        }
        System.out.println(" ");
        System.out.println("这是冒泡排序");
    }
    public static void Insertion(int[] j) {
        for (int i = 1; i < j.length; i++) //未安排好
        {
            for (int t = 0 ; t < i; t++)//已经排好
            {System.out.println("**00000000***");
                if (j[i]<j[t]) {//逐一拿已经排好的和即将要排的进比较
                    int  n = j[i];//把要安排的存储到n中
                    for(int m=i;m>t;m--){//现在第i位置可以安排第i-1的数据 以此类推,直到i-1=t+1
                        j[m] = j[m-1]; }
                    j[t]=n;
                    System.out.println(t+"*********");

                }

            }
        }
        System.out.println(" ");
        System.out.println("这是插入排序");
    }
}

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值