首页 > 其他分享 >冒泡排序 和 插入排序

冒泡排序 和 插入排序

时间:2022-09-20 14:55:12浏览次数:69  
标签:int 插入排序 冒泡排序 Arrays pa 比较

package com.zc.original_test;

import java.util.Arrays;

public class OrderTest {

public static void main(String[] args) {
int[] or = new int[]{10, 18 , 14, 25, 9 , 38 , 20 , 17};
bubble(or);
insert(or);
}

/**
* 冒泡排序:1. 依次比较相邻的元素,找出其中大的并通过交换放到最后,
* 2. 除最后x(x为已找到的最大数,次大数...)个元素,剩下的元素再次执行步骤1,
* 3. 重复步骤2,直到找到最后一个数。
* 总结:相邻比较,找出最大数,次大数........
*/
private static void bubble(int[] pa) {
final int[] or = Arrays.copyOf(pa, pa.length);
for(int i=0; i<or.length-1; i++) {
for(int j=0; j < or.length-1-i; j++) {
if(or[j]>or[j+1]) {
int temp = or[j];
or[j] = or[j+1];
or[j+1] = temp;
}
}
}
System.out.println("冒泡排序" + Arrays.toString(or));
}


/**
* 插入排序:类似于摸牌。默认已摸到的排是有序的,然后把刚摸的牌和手里的依次比较,插入到合适位置。
* 1. 取数,
* 2. 和前相邻元素比较,如果小,则交换, 重复该步骤。如果大则结束。
* 10 14 18 25
* 9 递进比较交换(如果这个数比25大,是不是就省去了继续比较)。
* 9 25
* 9 18
* 9 14
* 9 10
*
* 总结:和前相邻元素比较,小则交换。
* 这种排序会在数组前部形成一个有序的数组。如果原数组的顺序不太乱,则可能减少比较次数。
* 而冒泡则需要比较所有元素(除最大,次大..)找到其中最大的,全比较。
* 除非原数组是从大到小排列的(这时插入排序前部形成的有序数组则失去减少比较次数的作用,因为要比较全部元素),这时冒泡和插入排序效率基本一致。
*/
private static void insert(int[] pa) {
final int[] or = Arrays.copyOf(pa, pa.length);
for(int i=0;i<or.length;i++) {
for(int j=i-1;j>=0;j--) {
if(or[j+1] < or[j]) {
int temp = or[j+1];
or[j+1] = or[j];
or[j] = temp;
} else {
break; //这是减少比较次数的关键
}
}
}
System.out.println("插入排序" + Arrays.toString(or));
}



}

标签:int,插入排序,冒泡排序,Arrays,pa,比较
From: https://www.cnblogs.com/zhangchenglzhao/p/16711021.html

相关文章

  • C#:初识结构体、数组、冒泡排序。
    代码:///<summary>///1.结构体与枚举、变量相似,都是自定义一种新的数据的类型///2.结构体中的不称为变量,被称为是字段。,因为变量只可以储存一种数据,字段可以......
  • 冒泡排序
    冒泡排序直接上代码(经常性的面试笔试题)publicstaticvoidmain(String[]args){  int[]arrays={12,52,45,65,95,12,32};  int[]sort=sort(arrays);......
  • 十大排序算法之【插入排序】
    插入排序的原理很简单:斗地主理牌的时候怎么操作就怎么操作。最简易版代码实现:#include<bits/stdc++.h>voidinsert_sort(vector<int>&in){for(inti=0;i<in.s......
  • Python 中的冒泡排序和解释 - 教程。
    Python中的冒泡排序和解释-教程。冒泡排序是您比较相邻值并相应地交换它的地方。这种排序算法有一些应用,其中一些是对数据库中的数据进行排序,例如:按价格对亚马逊产品进......
  • java 实现冒泡排序
    先循环一次将数组内部的最大元素排序到最后一位importjava.util.Arrays;publicclassMain{ publicstaticvoidmain(String[]args){ int[]arr1={2,5,8,......
  • 「NOI2022」冒泡排序
    题目给定正整数\(n\)和\(m\)条限制,每条限制为非负整数三元组\((L,R,V)\)。现在,你需要构造一个长度为\(n\)的非负整数序列,并且满足每一条限制:一条限制\((L,R,V)\)......
  • js 实现插入排序
    //插入排序的原理://一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法。//插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好......
  • js 实现冒泡排序及优化方案
    //冒泡排序//原理就是每一轮循环,将一个最大的值放冒泡到最后//1.每一趟都是比较相邻两个元素,如果后一个元素大于前一个,则交换两个元素//2.第一趟从第一个元素开始......
  • 冒泡排序
    1.比较数组中,两个相邻的元素,如果第一个数比第二个数大,交换其位置。2.每一次比较,都会产生一个最大或最小的数字;3.下一轮比上一轮少比较一次importjava.util.Arrays;pub......
  • leetcode147:对链表进行插入排序
    packagecom.mxnet;publicclassSolution147{publicstaticvoidmain(String[]args){}/***Q:给定单个链表的头head,使用插入排序对链......