这样的插入排序
Posted 数据结构那些事儿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了这样的插入排序相关的知识,希望对你有一定的参考价值。
插入排序的基本思想是:将数组的第一个数认为是有序数组,从后往前(从前往后)扫描该有序数组,把数组中其余n-1个数,根据数值的大小,插入到有序数组中,直至数组中的所有数有序排列为止。这样的话,n个元素需要进行n-1趟排序!!!
当前有一组待排序序列,大部分是有序的,请问哪种排序方式更适合?
答 :直接插入排序
时间复杂度:
最坏情况(当数据无序) O(n^2)
最好情况(当数据有序) O(n)
空间复杂度:O(1)
稳定性:稳定
void insert_sort(int a[],int n) {
int i,j;
for(i=1; i<n; i++) { //循环从第2个元素开始
if(a[i]<a[i-1]) {
int temp=a[i];
for(j=i-1; j>=0 && a[j]>temp; j--) {
a[j+1]=a[j];
}
a[j+1]=temp;//此处就是a[j+1]=temp;
}
}
}
int main() {
int a[8]= {70,50,30,20,10,70,40,60};
int n=7;
insert_sort(a,n);
for(int i=0; i<=n; i++) {
printf("%d ", a[i]);
}
return 0;
}
以上是关于这样的插入排序的主要内容,如果未能解决你的问题,请参考以下文章