冒泡排序算法,C语言实现
易错点:循环条件
#include <stdio.h>
void bubblesort(int num[],int len);
int main(){
int num[10] = {5,2,6,0,3,9,1,7,4,8};//待排序数组
bubblesort(num,10);
for(int i = 0; i<10 ;i++){
printf("%d ",num[i]);
}
}
void bubblesort(int num[],int len){
//对数组num进行冒泡排序,len为数组长度,从小到大排序,O(n^2),稳定
/*核心思想,从数组0号元素开始,每相邻两个元素比较
,如果后小前大,则交换数值,每轮比较及交换过后
,参与比较部分最后一个元素就是最大值了
,最后一个元素不进入下一轮比较
*/
int i,j,temp;
for(i=0;i<len-1;i++){//i为比较轮数,总共进行len-1轮比较
for(j=0; j<len-i-1; j++){
//j<len-i-1,-i是每轮比较过后,最后一个元素会成为最大值,所以不再参与比较,-1是因为下面要+1,不能越界
if(num[j+1] < num[j]){//前后元素比较,后小前大则交换数值
temp = num[j];
num[j] = num[j+1];
num[j+1] = temp;
}
}
}
}