首页 > 其他分享 >插入排序

插入排序

时间:2023-02-20 10:34:23浏览次数:33  
标签:arr 21 int 32 插入排序 51


插入排序的时间复杂度是N^2。

插入排序有N-1趟排序组成,对于i=1到N-1趟,插入排序保证从位置0到位置i的元素处于排好的状态。

从位置j开始与前一个比较,符合条件的就交换,一直到不符合条件。

加个例子:

原始数组是34,8,64,51,32,21

一趟:8,34,64,51,32,21

二趟:8,34,64,51,32,21

三趟:8,34,51,64,32,21

四趟:8,32,34,51,64,21

五趟:8,21,32,34,51,64


import java.util.Scanner;

//插入排序:n^2
public class InsertionSort {
private static Scanner scanner = new Scanner(System.in);

public static void main(String[] args) {
// 输入数组个数,然后输入数组
int n = scanner.nextInt();
int arr[] = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = scanner.nextInt();
}
// 下面进行插入排序
for (int i = 1; i < arr.length; i++) {
int temp = arr[i];
int j = 0;
// 从大到小:temp > arr[j-1]
// 从小到大:temp < arr[j-1]
for (j = i; j > 0 && temp > arr[j - 1]; j--) {
arr[j] = arr[j - 1];
}
arr[j] = temp;
}
// 打印结果
for (int i : arr) {
System.out.print(i + " ");
}
System.out.println();
}
}

也可以这样,道理是一样的


//插入排序
public static void insertionSort(int arr[]){
for (int i = 1; i < arr.length; i++) {
for(int j = i;j>0&&arr[j]<arr[j-1];j--){
swap(arr,j,j-1);
}
}
}



标签:arr,21,int,32,插入排序,51
From: https://blog.51cto.com/u_15741949/6067733

相关文章

  • 插入排序,三种写法
    /*插入排序数组从下标1开始存储元素*/#include<stdio.h>#defineMAXSIZE20//一个作为示例的小顺序表的最大长度typedefstruct{intr[MAXSIZE+1];/......
  • 1.插入排序—直接插入排序(Straight Insertion Sort)
    基本思想:将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列......
  • 算法导论-上课笔记3:快速排序与插入排序
    文章目录​​1快速排序​​​​1.1快速排序的描述​​​​1.2快速排序性能的非形式化分析​​​​1.2.1最坏情况划分​​​​1.2.2最好情况划分​​​​1.2.3平衡的划......
  • 【算法】插入排序算法原理及实现
    1.什么是插入排序每一步将一个待排序的数据插入到前面已经排序好的有序序列里,直到插完所有的元素为止。插入排序与打扑克牌很类似,你摸到第一张牌的时候是不需要排序的,后续摸......
  • 【八大数据排序法】插入排序法的图形理解和案例实现 | C++
    第十六章插入排序法:::hljs-center目录第十六章插入排序法●前言●认识算法●一、插入排序法是什么?1.简要介绍2.图形理解3.算法分析●二、案例实现1.......
  • 冒泡排序+快速排序+插入排序(实现)
    王道督学营16/*Description读取10个整型数据1263589541356503844,然后通过冒泡排序,快速排序,插入排序,分别对该组数据进行排序,输出3次有序结果,每个数的输出占3个......
  • 插入排序(Insertion Sort)
    一、算法概述1.1算法分类十种常见排序算法可以分为两大类:比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排......
  • 排序算法之插入排序
    思路:将数组的第一个元素作为有序数组,其余的作为无序数组,从无序数组中取一个跟有序数组比较,将其放在合适的位置。那么有序数组就有两个元素,无序数组就减少一个元素。 ......
  • Java插入排序
    下面我们创建一个java程序,实现使用插入排序对数组元素进行排序。插入排序对于小元素是有好处的,因为排序大量元素它需要更多的时间。让我们来看看一个简单的java程序,使......
  • 插入排序
    话不多少,直接上代码(Coding):/***插入排序对于少量元素来说选择排序是一种有效的最简单的排序算法*算法和冒泡排序有点像都是逐一比较插入一个元素然后取出元素......