【資料結構】---直接插入排序
阿新 • • 發佈:2019-01-10
1、直接插入排序的基本操作是將一個記錄插入一個有序表中,從而得到一個新的有序表。
直接插入排序的時間複雜度為,但比氣泡排序和簡單選擇排序效能要好一些。
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); }