概念
思想:
括号中的序列是一个有序序列
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
void knPrint(int array[], int len)
{
for (int i = 0; i < len; i++)
{
printf("%d ", array[i]);
}
printf("\n");
}
void swap(int array[], int i, int j)
{
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
//插入排序 要点 1 拿出要插入的元素 2 符合条件的元素后移
void inertionSort(int array[], int len)// O(n*n)
{
int i = 0;
int j = 0;
int k = -1;
int temp = -1;
//{ 49, 38, 65, 97, 76, 13, 27, 48, 55, 4 };
for (i = 1; i < len; i++)
{
k = i;//待插入位置
temp = array[k]; //拿出要插入的元素
/****************************************************************/
for (j = i - 1; (j >= 0) && (array[j] > temp); j--)
{
array[j + 1] = array[j]; //元素后移
k = j; //k需要插入的位置
}
/***************************************************************/
array[k] = temp;//元素插入
}
}
int main()
{
int array[] = { 49, 38, 65, 97, 76, 13, 27 };
int len = sizeof(array) / sizeof(*array);
knPrint(array, len);
printf("------插入排序------\n");
inertionSort(array, len);
knPrint(array, len);
system("pause");
return 0;
}
复杂度分析