`
Dev|il
  • 浏览: 125270 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

向前插入排序

阅读更多
向前插入排序:(呵呵,不知道名字叫的对不对)
   思想:就像从桌子上摸起扑克一样,摸起一张放到左手,然后把位置牌好,左手的扑克永远是排好序的
   证明:开始左手是空的,从桌子上摸一张,显然此时左手上的牌是排好序的,然后摸起第二张,让第二张和第一张比较,如果第一张比第二张小,就把第一张和第二张交换,以此下去,左手的牌永远是排好序的
算法实现:(c语言实现,vc6编译通过)
#include <stdio.h>
int main()
{
	int number[] = {3, 7, 1, 0, 11, 99};
	int key; //保存关键字
	int n = sizeof(number) / sizeof(int); //计算数组的长度
	for(int i = 1; i < n; i++) //第一数永远是有序的,所以不用比较,从1开始
	{
		key = number[i];  //保存number[i]的值
		int j = i - 1;   
		while(j >=0 && key > number[j]) //因为number[0..j-1]是一个有序的序列,当不成立条件的时候跳出
		{
			number[j + 1] = number[j]; 
			j--;
		}
		number[j + 1] = key; //j始终会比交换的当前值小1 
	}
	i = 0;
	while(i < n)
	{
		printf("%d ", number[i]);  //输出序列
		i++;
	}

	return 0;
}
1
0
分享到:
评论

相关推荐

    插入排序 插入排序示例

    ### 插入排序详解 #### 一、插入排序概述 插入排序是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上通常采用in-...

    C语言实现的插入排序

    插入排序是一种简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。本文将深入探讨C语言实现的插入排序及其相关知识点。 首先,理解插入排序...

    插入排序Java代码

    ### 插入排序Java代码详解 #### 一、插入排序简介 插入排序是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,...

    C++实现插入排序

    插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。 ### 二、插入排序的时间复杂度与空间复杂度...

    快速和插入排序

    插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。 在Java中,插入排序的基本步骤可以表示为:...

    希尔排序,直接插入排序,折半插入排序算法.

    根据给定文件中的标题、描述、标签以及部分内容,我们可以总结出关于希尔排序(Shell Sort)、直接插入排序(Direct Insertion Sort)以及折半插入排序(Binary Insertion Sort)的相关知识点。 ### 希尔排序...

    c++实现多种线性表排序的算法(插入排序,希尔,冒泡,快速,堆排序,归并排序)

    插入排序是一种简单直观的排序算法,它的工作原理是通过构造一个有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。其时间复杂度在最坏情况下为O(n^2),在最好情况下(已排序)为O(n)。 ...

    数据结构 综合排序 冒泡排序 直接插入排序 快速排序 希尔排序等等

    直接插入排序是一种简单的排序方法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序...

    C++语言的算法实现包括插入排序冒泡排序堆排序快速排序

    插入排序是一种简单的排序算法,它的基本思想是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。在C++中,可以使用两层循环实现,外层循环控制未排序部分,内层循环寻找插入...

    c++ 选择排序 插入排序 快速排序

    插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。插入排序的时间复杂度为O(n^2),但在最好情况...

    六种内部排序算法比较:直接插入排序、希尔排序、冒泡排序、快速排序、选择排序、堆排序。

    本话题主要探讨六种内部排序算法:直接插入排序、希尔排序、冒泡排序、快速排序、选择排序以及堆排序。这六种排序算法各有优劣,适用于不同的场景,接下来我们将逐一进行详细阐述。 1. **直接插入排序**: 直接...

    java插入排序与合并排序

    **插入排序**是一种简单直观的排序算法,它的基本思想是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的...

    内部排序 希尔排序和直接插入排序的比较

    ### 直接插入排序与希尔排序的比较 #### 一、概述 本篇文章将通过一组具体的数据集(8个整数)对直接插入排序(Direct Insertion Sort)和希尔排序(Shell Sort)这两种排序方法进行深入分析和比较。这两种排序...

    插入排序(C语言实现)

    插入排序是一种简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。本文将深入探讨C语言实现插入排序的过程及其代码细节。 首先,理解插入...

    C语言版的排序方法---插入排序.docx

    插入排序是一种简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序...

    冒泡排序、选择排序、插入排序

    插入排序在实现上,通常采用in-place排序(即只需要用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。 在Xcode中实现插入排序,包括以下步骤: ...

    快速排序和直接插入排序的组合

    直接插入排序是一种简单的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。在Delphi 7.0中实现直接插入排序的步骤包括: 1. 从第二个元素开始,将其...

    直接插入排序代码

    直接插入排序是一种简单直观的排序算法,其基本思想是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。在其实现上,通常采用数组作为存储结构,从第一个元素开始,该元素可以认为是一...

Global site tag (gtag.js) - Google Analytics