7.1排序的基本知识
作者:互联网
7.1排序的基本知识
排序定义:排序就是将原本无序的序列重新排列成有序的序列。
排序的稳定性:待排序表中的两个元素Ri和Rj,其对应的关键字keyj=keyi ,且在排序前Ri在Rj前面,如果使用某一算法排序,Ri仍然在Rj的前面,则称这个排序算法是稳定的,否则称排序算法是不稳定的。
note:稳定性和排序的性能是没有关系。
直接插入排序:
首先以一个元素为有序的序列,然后将后面的元素依次插入到有序的序列中合适的位置直到所有的元素都插入有序序列。
void InsertSort(ElemType A[],int n){
int i,j;
for(i=2;i<=n;i++){ //从第二个元素开始,因为第一个元素可以认为是有序的序列
if(A[i].key<A[i-1].key){
A[0]=a[i];
for(j=i-1;A[0].key<A[j].key;--j)
A[j+1]=A[j];
A[j+1]=A[0];
}
}
}
空间复杂度:在下标为0的存储哨兵,是常数个辅助空间大小,所以空间复杂度O(1)。
时间复杂度:最坏情况下:整个序列都是逆序,此时复杂度为O(n^2)。
最好情况下:整个序列都是顺序,此时复杂度为O(n)。
稳定性:
标签:复杂度,基本知识,7.1,有序,序列,排序,Ri,Rj 来源: https://blog.csdn.net/BossHAO/article/details/100185428