【数据结构】---直接插入排序

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_40567229/article/details/81148075

 1、直接插入排序的基本操作是将一个记录插入一个有序表中,从而得到一个新的有序表。

       直接插入排序的时间复杂度为O(n^{2}),但比冒泡排序和简单选择排序性能要好一些。

2、直接插入排序实现算法:

#include <stdio.h>
#include <stdlib.h>
#include <iostream>

using namespace std;

typedef struct
{
	int data[100];
	int length;
}SqList;

void Out(SqList *L)
{
	int i;
	for (i = 1; i < L->length; i++)
	{
		printf("%d ", L->data[i]);
	}
}
void Insert(SqList *L)
{
	int i,size;
	printf("输入表的长度:");
	scanf_s("%d", &size);
	L->length = size;
	printf("输入%d个元素", size - 1);
	for (i = 1; i < L->length; i++)//data[0]做哨兵
	{
		scanf_s("%d", &L->data[i]);
	}
	printf("表中的元素为:");
	Out(L);
}

void InsertSort(SqList *L)
{
	int i, j;
	for (i = 1; i < L->length; i++)
	{
		if (L->data[i] < L->data[i - 1])
		{
			L->data[0] = L->data[i];
			for (j = i - 1 ; L->data[j] > L->data[0]; j--)
			{
				L->data[j + 1] = L->data[j];
			}
			L->data[j + 1] = L->data[0];
		}
		
	}
	printf("\n插入排序后的元素:");
	Out(L);
}

int main()
{
	SqList L;
	Insert(&L);
	InsertSort(&L);
}

猜你喜欢

转载自blog.csdn.net/weixin_40567229/article/details/81148075