每日一题冒泡排序
Posted 计算机考研说
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日一题冒泡排序相关的知识,希望对你有一定的参考价值。
冒泡排序:
1.比较相邻的元素。如果第一个比第二个大(小),就交换他们两个。
2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大(小)的数。
3.针对所有的元素重复以上的步骤,除了最后已经选出的元素(有序)。
4.持续每次对越来越少的元素(无序元素)重复上面的步骤,直到没有任何一对数字需要比较,则序列最终有序。
点击下方空白区域查看隐藏内容
▼
#include <stdio.h>
#include <stdlib.h>
void BubbleSort2(int *k,int n)
{
int i,j,temp,count1=0,count2=0;
bool flag=true; //作为交换标记
for(i=0;i<n-1&&flag;i++)
{
for(j=n-1;j>i;j--)
{
count1++;
flag=false;
if(k[j-1]>k[j]) //交换
{
count2++;
temp=k[j];
k[j]=k[j-1];
k[j-1]=temp;
flag=true;
}
}
}
printf("总共进行了%d次比较,进行了%d次移动\n",count1,count2);
}
int main()
{
int i;
int b[10]={5,2,6,0,3,23,1,7,4,67};
BubbleSort2(b,10);
printf("排序后的结果是:");
for(i=0;i<10;i++)
{
printf("%d ",b[i]);
}
printf("\n\n");
return 0;
}
以上是关于每日一题冒泡排序的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 688. 骑士在棋盘上的概率 / 1791. 找出星型图的中心节点 / 969. 煎饼排序(冒泡排序)