您的位置:首页 > 其它

插入排序

2015-09-03 21:38 375 查看
最好的情况是原来的序列已经是升序需要比较n-1次时间复杂度是O(n),最坏的情况是原来的序列是降序,需要比较n(n-1)/2次,时间复杂度是O(n2).只需要一个辅助空间,空间复杂度为O(1)
#include <stdio.h>

void InsertSort(int arr[], int n)
{
for (int i = 1; i < n; ++i)
{
int tmp = arr[i];
int j;
for (j = i; j > 0 && arr[j - 1] > tmp; --j)
{
arr[j] = arr[j - 1];
}
arr[j] = tmp;
}
}

int main(int argc, char const *argv[])
{
int arr[10] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
int len = sizeof(arr) / sizeof(int);
for (int i = 0; i < len; ++i)
{
printf("%d ", arr[i]);
}
printf("\n");

InsertSort(arr, len);

for (int i = 0; i < len; ++i)
{
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: