直接插入排序

来源:互联网 发布:python griddata 编辑:程序博客网 时间:2024/06/05 20:05

直接插入排序:

排序过程:在数组中,前几个数据已经排好序的情况下,将下一个待排序的数据(来自数组中未排序的数据)与排好序的数据相比较,找出要插入的位置,向后移动从该位置到待插入数据的前一个数据。最后将数据放到插入位置。


A[0]~A[3]:已排好序。

A[4]:待排序数据

A[5]~A[9]:未排序数据

假设递增排序,

tempA[4]


如果待插入位置为A[2],A[2]A[3]后移。


将A[4]放入该位置(原数组下标


(原数组下标)


大体需要三个循环:

1假设第一个已经排好序,从第二个数开始,依次扫描后面的每一个数据进行排序;

for(i=0;i<数组长度;i++)

2、查找要插入的位置

        While(j<排好序数据的长度)

3、移动数据

      for(k=0;k<移动长度;k++)

 

移动后交换数据:A[position]temp  




监视哨法:

#include "stdafx.h"#include <string.h>#include <stdlib.h>#include <stdio.h>#include <math.h>#define n 8void main(int argc, char *argv[]){int a[n]={0,56,23,89,64,39,96,23};int i,j;for(i=2;i<n;i++)  //假设第一个元素有序,从第二个元素开始排序。a[0]为监视哨{if(a[i-1]>a[i])  //如果发生逆序{                   a[0]=a[i];    //将待排序元素设置为监视哨                   for(j=i-1;a[0]<a[j];j--)   //查找要插入的位置,并移动。  a[j+1]=a[j];   a[j+1]=a[0];         //将待排序元素放入插入位置}}for(i=1;i<n;i++)printf("%d ",a[i]);  }




原创粉丝点击