直接插入排序
来源:互联网 发布:python griddata 编辑:程序博客网 时间:2024/06/05 20:05
直接插入排序:
排序过程:在数组中,前几个数据已经排好序的情况下,将下一个待排序的数据(来自数组中未排序的数据)与排好序的数据相比较,找出要插入的位置,向后移动从该位置到待插入数据的前一个数据。最后将数据放到插入位置。
A[0]~A[3]:已排好序。
A[4]:待排序数据
A[5]~A[9]:未排序数据
假设递增排序,
temp←A[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]); }
阅读全文
0 0
- 插入排序--直接插入
- 插入排序------直接插入
- 插入排序---直接插入
- 排序:直接插入排序
- 排序---直接插入排序
- 排序 -- 直接插入排序
- 排序---直接插入排序
- 排序--直接插入排序
- 排序-直接插入排序
- 【排序】直接插入排序
- 排序--直接插入排序
- 排序:直接插入排序
- 【排序】直接插入排序
- 排序--直接插入排序
- 排序--直接插入排序
- 排序-直接插入排序
- 插入排序--直接插入排序
- 插入排序-直接插入排序
- final关键字的使用
- 停止java线程的方法及详解
- 如何避免梯度爆炸梯度消失
- cocos2dx基础——坐标系
- A
- 直接插入排序
- SSM:Spring,SpringMVC与MyBatis整合
- 深入理解requestAnimationFrame
- [第五季]11.CSS边框样式
- 跨主机网络概述
- 时间的精准正则匹配
- Navicat for MySQL
- 170730 Learning materials for D-S and tensorflow-CNN
- HDU2549-壮志难酬