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

8.插入排序

时间:2023-06-06 20:34:48浏览次数:26  
标签:arr int 插入排序 len 算法 排序

  插入排序算法是一种简单的排序算法,也成为直接插入排序算法。它是一种稳定的排序算法,对局部有序的数据具有较高的效率。

  插入排序算法是一个对少量元素进行排序的有效算法。比如,打牌是我们使用插入排序方法最多的日常生活例子。我们在摸牌时,一般会重复一下步骤。起初,我们手里没有牌,摸出第一张,随意放在左手上,以后每一次摸排,都会按照花色从小到大排列,直到所有的牌摸完。插入排序算法采用的类似思路,每一次从无序序列中拿出一个数据,将它放到已排序的序序列的正确位置,如此重复,直到所有的无序序列中的数据都找到了正确位置。

插入排序

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

void insertSort(int arr[], int len)
{
	for (int i = 1; i < len;i++)
	{
		if (arr[i-1] > arr[i])
		{
			int temp = arr[i];
			int j = i - 1;
			for (; j >= 0 && temp < arr[j]; j--)
			{
				//数据后移
				arr[j + 1] = arr[j];
			}
			arr[j + 1] = temp;
		}
	}
}

void printArray(int arr[] ,int len)
{
	for (int i = 0; i < len; i++)
	{
		printf("%d\n",arr[i]);
	}
}

void test01()
{
	int arr[] = { 4, 1, 2, 3, 5, 7, 6 };
	//插入排序
	int len = sizeof(arr) / sizeof(int);
	insertSort(arr, len);

	//打印数组
	printArray(arr, len);
}

int main()
{
	test01();

	system("pause");
	return EXIT_SUCCESS;
}

参考资料来源:

黑马程序员

标签:arr,int,插入排序,len,算法,排序
From: https://www.cnblogs.com/codemagiciant/p/17461630.html

相关文章

  • 插入排序
    参考实现'''插入排序初始是一个有序列表,每次从无序列表取一个元素放到合适的位置完成排序'''definsert_sort(list):foriinrange(1,len(list)):#此时i表示无序元素的索引temp=list[i]#新来的待排序元素j=i-1#有序元素......
  • 插入排序Java版
    插入排序工作原理:从头开始遍历数组,如果发现当前项比前一项小,说明当前项应该插到前面,交换一下即可。利用双层for循环,第一层是遍历整个数组,第二层负责遍历当前所遍历到的位置之前的数组。/***@Author:翰林猿*@Description:插入排序**/publicclassInsert{  pu......
  • 排序算法(一):插入排序
    #author:闫振兴#datetime:2020/5/2018:14#software:PyCharm"""文件说明:"""#encoding:utf-8#插入排序:将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。#从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序......
  • python中对列表元素大小排序(冒泡排序法,选择排序法和插入排序法)—排序算法
    前言排序(Sorting)是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列。本文主要讲述python中经常用的三种排序算法,选择排序法,冒泡排序法和插入排序法及其区别。通过对列表里的元素大小排序进行阐述。一、选择排序法选择......
  • 排序_插入排序
    letArray=[36,34,334,45,233,544,87];//太麻烦而且交换的过程写的不对//console.log(insertSort(Array));//functioninsertSort(Array){//console.log(1);//leted=Array[0];//for(leti=1;i<Array.length;i++){//for(letj=1;j<i;j++){//......
  • 有趣的插入排序
    原文点此跳转什么是插入排序(insertionSort)?在数组中从左到右依次取一个数出来,然后把它放到合适的位置。从思想上可以分为有序区和无序区,有序区在左边代表已经排列好的元素。算法步骤默认左边第一个元素已经在有序区了在无序区取一个数出来(第二个元素)遍历有序区元素,把取出来的元素放......
  • 四种语言刷算法之对链表进行插入排序
    力扣147. 对链表进行插入排序1、C/***Definitionforsingly-linkedlist.*structListNode{*intval;*structListNode*next;*};*/structListNode*insertionSortList(structListNode*head){structListNode*newHead=head;struc......
  • Java中常用排序算法及示例-冒泡排序、希尔排序、选择排序、插入排序、合并排序、基数
    场景Java中需要对数据进行排序处理,常用的排序算法以及示例进行归纳整理。注:实现1、冒泡排序冒泡排序法又称为交换排序法,原理是从第一个元素开始,比较相邻元素的大小,若大小顺序有误,则对调后再进行下一个元素的比较。如此扫描一次之后就可以确保最后一个元素位于正确的顺序,接着逐步进......
  • 排序算法-插入排序
    排序算法-插入排序1.直接插入排序InsertSort1.1InsertSort介绍InsertSort也是一种简单的内部排序算法,其是对待排序的元素以插入的方式寻找该元素的适当位置,以达到排序的目的,是一种稳定的排序算法。InserSort的基本思想是:将待排序序列看作一个有序表和一个无序表,初始时......
  • Java中常用排序算法及示例-冒泡排序、希尔排序、选择排序、插入排序、合并排序、基数
    场景Java中需要对数据进行排序处理,常用的排序算法以及示例进行归纳整理。注:博客:https://blog.csdn.net/badao_liumang_qizhi实现1、冒泡排序冒泡排序法又称为交换排序法,原理是从第一个元素开始,比较相邻元素的大小,若大小顺序有误,则对调后再进行下一个元素的比较。如此扫描......