这篇博文主要用于自己学习的文章梳理,方便以后回忆。
First,冒泡排序, 算法的时间复杂度是N*N ,在数据较多的时候,和快速排序比较运行时间,简直慢的掉渣,
冒泡排序的思想,主要是相邻两个元素比较,如果前一个元素比后一个元素大,则进行交换,否则继续后移,知道一次循环结束,此时最后一个元素是序列中最大的元素。
每一个趟将一个元素像冒泡一样冒出,进行n-1此循环后,序列有序。
冒泡排序主要两个FOR循环的边界。
void bubble(int *a,int len)
{
int i,j;
int temp;
for (i=0;i<len-1;++i)
{
for (j=0;j<len-i-1;j++)
{
if (a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
Second,插入排序。
插入排序的主要思想是假设初始序列只有一个元素,这个元素肯定有序,每次向序列里插入一个元素,找到元素合适的位置,然后进行插入。
插入排序的核心部分就是找到该元素合适的位置。
可以将带插入的元素和 有序序列最后比较,如果比最后一个元素大,直接插入最后一个元素后面,如果比最后一个元素小,则将最后一个元素后移,知道找到合适的位置停止。
最后将待插入的元素插入到适当的位置上。