直接插入排序(c语言实现)

原创 2018年04月05日 14:03:43
#include <stdio.h>

#define T 1
#define F 0
#define MAXSIZE 10		//要排序数组个数的最大值

typedef struct
{
	int r[MAXSIZE + 1];	//存储要排序数组,r[0]用作哨兵或临时变量
	int length;
}SqList;

void swap(SqList *L, int i, int j)
{
	int temp = L->r[i];
	L->r[i] = L->r[j];
	L->r[j] = temp;
}

void insertSort(SqList *L)
{
	int i, j;
	for (i = 2; i <= L->length; i++)
	{
		if (L->r[i] < L->r[i-1])		//需将L->r[i]插入到有序子表,即后一个小于前一个才需要插入
		{
			L->r[0] = L->r[i];			//设置哨兵,即将要插入的值赋值给一个临时变量,并且使之与之前有序的子表做比较
			for (j = i-1; L->r[j] > L->r[0]; j--)	//每次都从当前值的前一个位置开始遍历
			{										//循环结束的条件:1、找到一个比哨兵小的值 2、j=0即r[j]==r[0]
				L->r[j+1] = L->r[j];	//比其大的,即比哨兵大的都后移
			}
			L->r[j+1] = L->r[0];		//将其插入到正确位置,因为j多减了一次1 所以是j+1
		}
	}
}

int main()
{
	int i;
	SqList L;
	L.length = 10;
	for (i = 1; i < L.length+1; i++)
	{
		L.r[i] = i;
	}
	L.r[5] = 100;
	L.r[7] = 90;
	for (i = 1; i < L.length+1; i++)
	{
		printf("%d ", L.r[i]);
	}		
	insertSort(&L);
	printf("\n");
	for (i = 1; i < L.length+1; i++)
	{
		printf("%d ", L.r[i]);
	}
	printf("\n");
	return 0;
}

版权声明:不积跬步无以至千里,愿与君共勉! https://blog.csdn.net/Crazy_Tengt/article/details/79825995

C语言那些事儿

互联网上首家使用C99录制的C语言教程。 全面、专业。最标准的C语言教程。
  • 2016年05月08日 10:41

数据结构之---C语言实现直接插入排序

数据结构之---C语言实现直接插入排序
  • u012965373
  • u012965373
  • 2015-09-06 23:01:12
  • 5748

直接插入排序的c语言实现

直接插入排序即是在要排序的数组中,假设前n-1(n>=2)个数已经是排好序的,现在要把第n个数插入到前n个已经排好序的数组中,使得这n个数也变成有序的,如此反复循环,使得要排序的数组中的最后一个元素也...
  • xulu_258
  • xulu_258
  • 2016-05-03 21:01:23
  • 3002

数据结构 C语言实现直接插入排序

一、直接插入排序简介 每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。 第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从前向后扫描,...
  • u010889616
  • u010889616
  • 2015-08-19 18:03:46
  • 1128

【算法】直接插入排序C语言实现

不知道大家喜不喜欢打扑克?哈哈,我就挺喜欢的,尤其是三人斗地主,很喜欢.现在我来描述一幅画面看看大家熟不熟悉. 我抓牌的习惯是,在抓牌的时候,我要看着我的牌,看看牌的状况,有没有大小鬼,有几个2,...
  • lchad
  • lchad
  • 2015-02-06 00:44:48
  • 2247

八大排序算法之一直接插入排序(C语言)

概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 我们这里说说八大排序就是内部排序。 ...
  • liujiejieliu1234
  • liujiejieliu1234
  • 2015-04-22 15:06:04
  • 9217

直接插入排序(C语言版)

#include #include #include void insertSort(int array[], int size); void printArray(int *array, i...
  • Thinkpad4180NC5
  • Thinkpad4180NC5
  • 2014-10-05 01:35:46
  • 2284

(数据结构排序的实验四)快速,冒泡,简单选择,直接插入排序的c语言实现!!

数据结构排序实验,共有冒泡,选择,插入,快速排序四种排序方法。c语言代码详细实现和解释。...
  • xuqinggangsls
  • xuqinggangsls
  • 2014-12-11 19:05:42
  • 1413

直接插入排序c语言,很详细了啊

  • 2009年12月22日 10:35
  • 767B
  • 下载

基于单链表的直接插入排序算法和代码实现

在链表上对直接插入排序算法的思想描述如下: 在带头结点的单链表L 中,如果将已有元素进行升序(或降序)排列,可先将原单链表L 暂时断成两条短链L1和L2,新链L1的头结点用原链L 的头结点(head...
  • ymwvs
  • ymwvs
  • 2014-04-15 14:34:37
  • 3872
收藏助手
不良信息举报
您举报文章:直接插入排序(c语言实现)
举报原因:
原因补充:

(最多只允许输入30个字)