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

插入排序

时间:2023-01-04 20:35:26浏览次数:38  
标签:arr int 插入排序 len range key

# InsertionSort 插入排序
def sort_integers(self, a: List[int]):
    for i in range(2,len(a)+1):
        # i=2,3,4...
        # 做len(a)-1次循环
        for j in range(i-1,0,-1):
        # j=1,2
            if a[j-1]>a[j]: # 大的放在后面
                a[j-1],a[j]=a[j],a[j-1]
            else:
                break # 跳出当前循环-for j in range(i-1,0,-1):
def insertionSort(arr): 
    for i in range(1, len(arr)): 
        # 做len(arr)-1 次循环
        # 从数组的第二个元素开始
        key = arr[i] 
        j = i-1
        while j >=0 and key < arr[j] : 
            arr[j+1] = arr[j] 
            j -= 1
        arr[j+1] = key 
arr = [12, 11, 13, 5, 6] 
insertionSort(arr) 
print ("排序后的数组:") 
for i in range(len(arr)): 
    print ("%d" %arr[i])
void DirecInsSort(int* a, int n)
// direct insert sorting
{
    int i, k;
    for (i=1; i<n; i++)   {
	//i=1,2,3,4...
    // 从数组第二个数开始
        // 请在此添加代码,补全函数DirecInsSort
        /********** Begin *********/
        int temp = a[i];
		//从第二个数开始
        for(k = i - 1; k >= 0; k--)
		// 最开始 k=0,1,2,3,4...
        {
            if(a[k] > temp)
            {
				// k+1=i	
				//a[k+1]=a[i]
                a[k + 1] = a[k];
            }
			//如果a[k]>a[i]	, a[k]往前挪一个
            else
                break;
        }
		//如果a[i]后面有小于或等于temp=a[i]的 ,把a[i]插入到它的前面
        a[k + 1] = temp;
        /********** End **********/
    }
}

标签:arr,int,插入排序,len,range,key
From: https://www.cnblogs.com/chenrunun/p/17025922.html

相关文章

  • 【插入排序】详细讲解
    总体思路排序流程:一共十个数排序,先用第二个数55跟第一个数99比较,如果55小于99,那么交换55和99,此时前两个数(即55和99)已经有序了。接下来用第三个数11跟第二个数99比较,如......
  • 排序-插入排序
    插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴,但它的原理应该是最容易理解的了,因为只要打过扑克牌的人都应该能够秒懂。插入排序是一种最简单直观的排序算法,......
  • 直接插入排序
    本题要求实现直接插入排序函数,待排序列的长度1<=n<=1000。函数接口定义:1voidInsertSort(SqListL);其中L是待排序表,使排序后的数据从小到大排列。###类型定义:1t......
  • 【算法实践】手把手带你快速实现插入排序
    前言每学习一个新东西总要首先知道他是什么,能做什么,怎么做,类似于哲学中的三大问题:我是谁,从哪里来,要到哪里去。或许我们一直徘徊在哲学的迷思中,也许一直想不明白,但是在思考的......
  • 插入排序优化
    defselection_sort(alist):n=len(alist)#需要进行n-1次选择操作a=0foriinrange(n-1):#记录最小位置min_index=i......
  • 插入排序(直接插入,折半插入,希尔排序)
    学习时间2022.12.17插入排序基本概念直接插入排序要理解直接插入排序看这篇解学武插入排序算法及C语言实现将第一待排序序列第一个元素看做一个有序序列,把第二个元素......
  • 数据结构之 插入排序
    插入排序:包括:​​直接插入排序​​,二分插入排序(又称折半插入排序),链表插入排序,​​希尔排序​​(又称缩小增量排序)。插入排序算法思路假定这个​​数组​​的序是排好的,......
  • 直接插入排序 && 折半插入排序 && 希尔排序
    插入排序&&折半插入排序&&希尔排序:(一)插入排序:(1)代码实现:voidinsertSort(int*array,intn){inttemp;inti,j;for(i=1;i<n;i++){if(array[i]<array[i-1])......
  • 直接插入排序
    排序是非常常见且常用的算法,这次的排序算法是直接插入排序见例题如下:本题要求实现直接插入排序函数,待排序列的长度1<=n<=1000。函数接口定义:voidInsertSort(SqListL......
  • 三种基本排序方法之选择排序、冒泡排序、插入排序
    前言三种最基本的排序方法:选择排序、冒泡排序、插入排序。这些排序并不是学习数据结构时才碰到的,早在学习C++时教材上就有介绍。现在正在学习数据结构,复习并且自己动手实......