赞
踩
void insertion_sort(int arr[], int len)
{
int temp;//用来存放临时的变量
for (int i = 1; i < len; i++) //从第二个元素开始,因为第一个元素可以认为已经排好序了
{
temp = arr[i]; // 取出当前需要插入的元素
for (int j = i - 1; j >= 0 && arr[j] > temp; j--) // 依次后移,查找插入位置
{
arr[j + 1] = arr[j]; // 将当前元素后移一位
}
arr[j + 1] = temp;// 插入到合适的位置
}
}
输入10个数字并将其从小到大排
#include <stdio.h> void insertion_sort(int arr[], int len) { int i, j, temp; for (i = 1; i < len; i++) { temp = arr[i]; for (j = i - 1; j >= 0 && arr[j] > temp; j--) { arr[j + 1] = arr[j]; } arr[j + 1] = temp; } for (int i = 0; i < len; i++) { printf("%d ", arr[i]); } } int main() { int arr[10]; for (int i = 0; i < 10; i++) { scanf("%d", &arr[i]); } insertion_sort(arr, 10); return 0; }
结果
优点:
如果是进行相对有序的数组,效率会非常高。不占额外空间,是一种稳定的算法。
缺点:
时间复杂度高,遇到数据过多的情况下不是很适用。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。