1. 程式人生 > >【資料結構】---直接插入排序

【資料結構】---直接插入排序

 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);
}