标签:复杂度 基本知识 7.1 有序 序列 排序 Ri Rj
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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。