插入排序
#include<stdio.h>
void insertsort(int* nums, int n) {
for (int i = 1; i < n - 1; i++) {
int j = i - 1;//有序区最后一个下标
int temp = nums[i];//保存无序区第一个元素
for (; j >= 0; j--) {
if (nums[j] > temp) {
nums[j + 1] = nums[j];
}
else {
break;
}
}
nums[j + 1] = temp;//找到合适的位置进行放置
}
}
int main() {
int nums[] = { 1,5,2,4,6,7 };
int n = sizeof(nums) / sizeof(int);
insertsort(nums, n);
for (int i = 0; i < n; i++) {
printf("%d", nums[i]);
}
return 0;
}
时间复杂度分析:
最好的情况:该数组本来就具备排序,因此为O(n)
最坏的情况:该数组要进行依次排序,因此为O(n^2)
稳定性:
稳定