算法导论--python--插入排序

#!/usr/local/python35/bin/python3.5

#### insert sort 

if __name__=="__main__":
    var_list=[3,2,4,5,1]
    """
    从第二项,开始逐个的与它前面的项比较,如果比前面的项要小,那么就排到前面去。
    """
    for index in range(1,len(var_list)):
        key=var_list[index] ## 记录下第二项的值
        i=index -1 ## 记录下前项的下标
        while i>=0 and key<var_list[i] : ## 如果满足条,就把前项向后移动,并把前项下标向前移动一位
            var_list[i+1]=var_list[i]
            i=i-1
        var_list[i+1]=key ## 写回
    print(var_list)
#include<iostream>

using std::cout;
using std::cin;
using std::endl;

int main()
{
    int var_list[5]={3,2,4,5,1};
    for(int i=1; i<=4;i++)
    {
        int key=var_list[i];
        int j=i-1;
        while(j>=0 && var_list[j]>key)
        {
            var_list[j+1]=var_list[j];
            j=j-1;
        }
        var_list[j+1]=key;
    }

    for(int i=0;i<5;i++)
    {
        cout<<var_list[i]<<",";
    }
    cout<<endl;
}
时间: 2024-07-30 02:23:52

算法导论--python--插入排序的相关文章

算法导论之插入排序和归并排序

一.创建我们的测试工程 因为我们只理解相应算法,没有什么用户图形,也就用不到UI了,在这儿使用Xcode创建一个基于Mac开发的控制台工程即可,整个工程很简单,一个main函数一个排序类,如下所示. 在Sort类中我们写了关于排序的一些类方法,然后在main函数中进行调用. 二.插入排序 插入排序顾名思义,就是把无序的元素插入到有序的元素当中.<算法导论>中举了一个特为形象的例子,插入排序就如同你在打扑克时摸牌一样,手里的牌是有序的,而你刚摸得牌是是随机的,需要你插入到已经排好序的扑克牌中,这

【算法导论】插入排序

排序问题 输入:n个数的一个序列<a1, a2, ..., an> 输出:输入序列的一个排列<b1, b2, ..., bn>,满足 b1 ≤ b2 ≤ ... ≤ bn. 插入排序 对于插入排序,我们将其伪代码命名为Insertion-sort,其中的参数是一个数组A[1..n],包含长度为n的要排序的一个序列.(在代码中,A中元素的数目n用A.length来表示.)该算法原址排序输入的数:算法在数组A中重排这些数,在任何时候,最多只有其中的常数个数字存储在数组外面.在过程Ins

算法导论-排序-插入排序、归并排序

目录: 1.插入排序算法伪码 2.插入排序c++实现 3.归并排序算法伪码 4.归并排序c++实现 5.总测试程序 内容: 1.插入排序算法伪码 Insertion_sort(A[],n) //数组下标从1开始 for j <- 2 to n do key <- A[j] i <- j-1 while i>0 and A[i]>key A[i+1] <- A[i] i <- i-1 A[i+1]=key 2.插入排序c++实现 1 template<type

算法导论之——插入排序

#include<stdio.h> /*我们希望排序的数也称为关键字*/ void sort_on(void); void sort_down(void); int A[6] = { 5,2,4,6,1,3 }; int main(void) { //sort_down(); sort_on(); for (int num = 0; num<6; num++) printf("%d ", A[num]); return 0; } //升序 void sort_on(v

《算法导论》插入排序

2017-08-17 11:40:36 writer:pprp 最简单的插入排序,用代码实现思想 1 #include <iostream> 2 #include <string> 3 #include <fstream> 4 #include <cstring> 5 6 using namespace std; 7 const int maxn = 9999; 8 int a[maxn]; 9 int N; 10 11 void init() 12 { 1

算法导论之所有排序算法的Python实现

最近一段时间学习了算法导论第二版书的第一部分和第二部分的内容,自己编写了其中排序相关的几乎全部算法,包括冒泡排序(bubble sort).选择排序( selection sort).插入排序(insertion sort).希尔排序(shell sort).归并排序(merge sort).快速排序(quick sort).计数排序(count sort).基数排序(radix sort).桶排序(bucket sort).期望线性时间的第k个顺序统计量选择.最坏情况线性时间的中位数选择,并给

算法导论学习之插入排序+合并排序

最近准备花时间把算法导论详细的看一遍,强化一下算法和数据结构的基础,将一些总结性的东西写到博客上去. 一.插入排序 算法思想:如果一个数组A,从A[1–n-1]都是有序的,然后我们将A[n]插入到A[1–n-1]的某个合适的位置上去那么就可以保证A[1–n]都是有序的.这就是插入排序的思想:具体实现的时候我们将数组的第一个元素看出有序,然后从第二个元素开始按照上面的步骤进行插入操作,直到插入最后一个元素,然后整个数组都是有序的了. 时间复杂度分析:代码中有两重for循环,很容易看出时间复杂度是n

算法导论—排序之插入排序

void insertion_sort(vector<int> &num){ for(int i = 1; i < num.size(); i++){ int j = i-1; int val = num[i]; while(j>=0 && num[j] >= val){ num[j+1] = num[j]; j--; } num[j+1] = val; } } 每次迭代时,将num[i] 作为key值,且前子数组[0,i-1] 构成已排好序,每次与左

插入排序——算法导论

最近在看MIT的算法导论,在网易公开课上有这门课的视频,正好讲义也在图书馆借到了,有在看的小伙伴可以一起加油. 绪论中以插入排序为例,讲述了算法中非常重要的两个概念时间复杂度T(n)和空间复杂度.详细地对程序花费时间T. 伪代码: INSERTION-SORT(A) 1 for j←2 to length[A] 2 do key←A[j] 3 Insert A[j] into the sorted 4 sequence A[1..j-1]. 5 i←j-1 6 while i>0 and A[i

JavaScript ,Python,Go,java,C#系列算法之【插入排序】篇

常见的内部排序算法有:插入排序.希尔排序.选择排序.冒泡排序.归并排序.快速排序.堆排序.基数排序等.用一张图概括: 插入排序 插入排序(英语:Insertion Sort)是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入.插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间. 插入排序和冒泡排序一样,也有一种