重温数据结构的排序算法
IDE ------>用的CodeRunner 比较简洁 轻量级 支持多种开发语言的一款IDE
1.直接插入排序
直接插入排序是一种简单的插入排序法,所以适用于少量数据的排序,直接插入排序是比较稳定的一种排序算法。
排序稳定性(待排序的记录序列中可能存在两个或两个以上关键字相等的记录。排序前的序列中Ri领先于Rj (i<j)若在排序后的序列中Ri仍然领先于Rj,则称所用的方法是稳定的。)
其基本思想是:把待排序的纪录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的纪录插入完为止,得到一个新的有序序列。直接插入排序:时间复杂度O(n^2)
步骤大概是这样的:
1.从第一个元素开始,该元素可以认为已经被排序 代码中 temp = R[i];就是这个意思
2.取出下一个元素,在已经排序的元素序列中从后向前扫描
3.如果该元素(已排序)大于新元素,将该元素移到下一位置
4.重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
5.将新元素插入到该位置后
6.重复步骤2~5
代码:
void InsertSort(int R[],int n)
{
int i,j;
int temp;
for(i=1;i<n;++i)
{
temp =R[i];
j =i-1;
while (j>=0 && temp < R[j]) {
R[j+1]=R[j];
--j;
}
R[j+1]=temp;
}
}
int main(int argc, char *argv[]) {
int a[7]={49,38,65,97,76,13,27};
InsertSort(a, 7);
for(int i = 0; i<7;i++)
{
cout<<a[i]<<endl;
}
}