排序思想:从小到大
冒泡排序理解起来相对简单,即相邻两个数互相比较,若满足条件,则交换两数的位置,
①第一个数与第二个数比较,第二个数与第三个数比较…第一遍即找出最大的数放在了最后一位。
②重新开始比较,第一个数与第二个数比较,第二个数与第三个数比较…一直比较到倒数第三个数与倒数第二个数,第二遍找到了第二大的数,放在了位置倒数第二位。
③…如此循环比较,直到最后只剩第一个数与第二个数,比较完后,排序结束。
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//冒泡排序
void insert_sort(int *ttr,int num)
{
int i,j;
int temp;
for(i = 0;i < num-1;i++)//循环数组元素总数-1次
{
for(j = 0;j < (num-1-i);j++) //因为每一遍循环,数列后的最大数 已经固定下了,所以固定下的最大数不需要再做循环比较
{斜体样式
if(ttr[j]>ttr[j+1]) //相邻两数位置交换
{
temp = ttr[j];
ttr[j] = ttr[j+1];
ttr[j+1] = temp;
}
}
}
}
//测试函数
int main()
{
int str1[10] = {5,2,4,9,3,8,7,1,6,0};
int integer,i;
integer = sizeof(str1) / sizeof(int);
insert_sort(str1,integer);
for(i=0;i<integer;i++)
{
printf("%d\t",str1[i]);
}
printf("\n");
system(“pause”);
return 0;
}
注:
时间复杂度
最好情况:O(n)
最坏情况:O(n2) //n的平方
平均情况:O(n2) //n的平方
时间复杂度:O(1)
是否稳定:是
本文深入讲解冒泡排序算法,从基本思想出发,详细介绍其工作原理和实现步骤。通过实例演示,展示如何使用C语言实现冒泡排序,并分析其时间复杂度。适合初学者理解和掌握排序算法。
4127

被折叠的 条评论
为什么被折叠?



