简单插入排序的实现

  简单插入排序属于比较简单的排序算法,实现原理自行谷歌一下,下面给出具体代码。

#include<iostream>
using namespace std;
void insertsort(int a[],int n)
{
    int i,j;
    for(i = 1;i < n;i ++ )
        {
            int tmp = a[i];
            for(j = i;j > 0 && tmp < a[j-1];j --)
                a[j] = a[j-1];
            a[j] = tmp;
        }
}
int main()
{
    int a[10] = {3,6,1,9,4,5,2,7,0,8};
    insertsort(a,10);
    for(int i = 0;i < 10;i ++)
        cout<<a[i]<<" ";
    cout<<endl;
    return 0;
}

  输出结果如图:

时间: 2024-11-05 06:30:42

简单插入排序的实现的相关文章

排序(2)---------简单插入排序(C语言实现)

插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入.插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间. 通俗解释: ①假设初始序列的第一个元素是有序的(当一个序列只有1个元素时,我们可以认为其是有序的). ②从第二个元素开始与前面的元素进行比较,如果比前面的大

简单插入排序和希尔排序(原理和C语言实现)

简单插入排序的原理很简单: 所谓插入排序,就是将新加入的数据插入到一个有序数组中,并且保证插入后有序.这就要求要找到插入的位置. (图片来自维基百科) 对于一个已经存在的数组(乱序),要将其有序排列(这里取从小到大),就可以按照下面的步骤: 1.先假定一个有序数组,这个数组只有一个元素,就是第一个元素,它一定是有序的; 2.我们从第二个数(下标为1)开始向后遍历数组; for(insert_index=1; insert_index < arr_len; insert_index++){ } 3

选择排序 冒泡排序 简单插入排序

排序: public class SortDemo { public static void main(String[] args) { int[] arr = { 5, 8, 9, 12, 55, 565, 421, 12, 2512, -5, -56 }; // int[] arr = { 6, 9, 4589, 442, 458, 5232, -788, 7, 545, -44, 55, -11 // }; // selectionSort(arr); // bubbleSort(arr)

HDU-1040-As Easy As A+B(诚如题目所说和A+B一样简单-插入排序水过)

As Easy As A+B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 45268    Accepted Submission(s): 19340 Problem Description These days, I am thinking about a question, how can I get a problem as

简单插入排序(C++版)

#include <iostream> using namespace std; /** \ Insert Sort * * Key: * * reserve: tm = a[i] * * position: int j = i-1 * * move : while * */ template <typename T> void insertSort(T a[], int n) { T tm; for (int i = 1; i < n; i++) { tm = a[i];

简单插入排序

/* 基本思路:每次将一个待排序的数据元素, 插入到前面已经排好序的数列中的适当位置, 使数列依然有序:直到待排序数据元素全部插入完为止.*/ static void Insertion_Sort(int[] a){ for(int i=1;i<a.length;i++){ if(a[i]<a[i-1]){ int temp=a[i]; int k=i; while(k>0&&a[k-1]>temp){ a[k]=temp[k-1]; k--; } a[k]=tem

插入排序算法之直接插入排序和希尔排序

插入排序算法 有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法--插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的.个数加一的有序数据. 直接插入排序 直接插入排序的排序思路是:每次将一个待排序的元素与已排序的元素进行逐一比较,直到找到合适的位置按大小插入. 例子: 有序列: 开始时,有序序列只有一个元素就是第一个元素(红色),后面的无序序列(绿色).接下来,取无序序列中

排序算法之 Java插入排序算法

package net.qh.test.sort; import java.util.ArrayList; import java.util.Calendar; import java.util.List; /** * Created by Administrator on 2016/03/01. */ public class Insert { public int[] sort(int[] arr){ if ( arr == null || arr.length <= 1 ){ return

排序算法(五)插入排序

从一个乱序的数组中依次取值,插入到一个已经排好序的数组中. 这看起来好像要两个数组才能完成,但如果只想在同一个数组内排序,也是可以的.此时需要想象出两个区域:前方有序区和后方乱序区. 设数组为a[0...n-1]. 初始时,a[0]自成1个有序区,无序区为a[1...n-1].令i=1 将a[i]并入当前的有序区a[0...i-1]中形成a[0...i]的有序区间. i++并重复第二步直到i==n-1,排序完成. 下面给出严格按照定义书写的代码(由小到大排序): 1 void insertSor