两个数相同时c语言怎么用冒泡法?

作者&投稿:游纪 (若有异议请与网页底部的电邮联系)
~ 冒泡排序是一种简单但效率较低的排序算法,它可以将一个数列中的元素按照从大到小或从小到大的顺序排列。
如果要对一个数组进行冒泡排序,在C语言中可以使用以下的代码:
void bubbleSort(int arr[], int n) { int i, j, temp; for (i = 0; i < n - 1; i++) { for (j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) { temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } }}

这里的arr是要排序的数组,n是数组的长度。代码中,外层循环控制排序的轮数,内层循环控制每一轮中的比较和交换。
如果要在冒泡排序的过程中,将相同的元素放在一起,可以将代码稍作修改:
c复制代码void bubbleSort(int arr[], int n) { int i, j, temp; for (i = 0; i < n - 1; i++) { for (j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) { temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } else if (arr[j] == arr[j + 1]) { // 如果相邻的两个数相同,则交换它们的位置,使得相同的数值放在一起 temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } }}

这里的修改主要在内层循环的if语句中,加上了一个else if语句,用于处理相同的元素。


用c语言如何编写一个比较两个数大小的程序
如何只是比较大小的话,直接一个判断就ok了。代码如下:include <stdio.h> int main(){ int a=0,b=0;scanf("%d %d",&a,&b);if(a>b)printf("%d > %d\\n",a,b);else if (a<b)printf("%d < %d\\n",a,b);else printf("相等\\n");return 0;} 分析:定义两个变量,然后输入...

c语言作业:输入一个整数,判断该数的每位数字是否都相同,如果是则输出...
C语言很久没写了,怕误导你 说下基本的算法吧,对一个整数进行求余10操作(x%10)可以得到个位数 比如512%10=51余2,余数既是个位数,再拿51%10=5余1,得到十位数,以此类推以得到每位整数,至于判断是否相同就很简单了

c语言编写程序,输入个数为10-100的一列数字,数字大小在10-1000,输出其 ...
include "stdio.h"int main(){int i,j,k=0,n,a[100];scanf("%d",&n);for(i=0;i<n;i++)scanf("%d",&a[i]);\/\/printf("\\n相同的数字:\\n"); \/\/此句去掉 for(i=0;i<n-1;i++)if(a[i])for(j=i+1;j<n;j++)if(a[i]==a[j]){ printf("%d ",a[i]);fo...

C语言中,寻找两个数组中相同的元素的个数,与元素
80,70,60,50,40,772,294,1065,184}; \/\/10int a[]={90,80,70,60,50,40,30,20,10,9,8,7,6,5,42,40,50,1,2,3}; \/\/在这里定义的好处是,可以在任意函数中通用 20int _tmain(int argc, _TCHAR* argv[]){ int i; int c[sizeof(b)\/sizeof(b[0])...

C语言怎么判断一个数是否是回文数?
所谓回文数,就是说一个数字从左边读和从右边读的结果是一模一样的,比如12321。以下是判断一个数是否为回文数的代码:大致思路就是将一个数反着排列一遍,如果和原先的数一样,那么就是回文数。这个排列过程用到了余数和整除。比如986,经过排列后为689,就不是回文数。

c语言判断每位数字是否相同
这个程序还有一个问题,就是当输入的数超过整数的范围,运算就会出错,a数组那100个单元都是浪费90多个,如果要程序更完善,建议用字符数组来定义。下面是用字符数组来做的 include"stdio.h"void main(){ int n,m=0,i=0,s=0,t;char a,b[100];while(scanf("%s",b)!=EOF){ i=0;s=0;...

c语言如何在一批数中找最大数?
(3)输出最大数(max的值)。这个问题涉及C语言for循环嵌套和一维数组内容,以6个数为例,具体程序如下:include<stdio.h> int main(void){ int a[6],i,max;for(i=0;i<6;i++) \/\/将6个数输入a数组 scanf("%d",&a[i]);max=a[0]; \/\/首先将a[0]视为最大数,将a[0]存...

用c语言 定义两个规模相同的二维整型数组,编程实现对它们进行加,减运算...
include "stdio.h"int main(){ int a[3][3],b[3][3],c[3][3],d[3][3];\/\/数组a+数组b结果放在数组c中 \/\/数组a-数组b结果放在数组d中 int i,j;for(i=0;i<3;i++) \/\/给数组a赋值 for(j=0;j<3;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++) \/\/给...

C语言中判断两个数组内容是否相同!
C语言有个函数 memcmp是用来进行内存比较的 extern int memcmp(void buf1,void buf2,unsigned int count);if(0==memcmp(ID,ID1,20))\/\/ID1等于ID2 { } 先要明确运算符按优先级不同分类,《C程序设计》运算符可分为15种优先级,从高到低,优先级为1 ~ 15,除第2.13级和第14级为从右至...

c语言怎样统计连续相同字符的个数
include<string.h> void main(){ char s[100];int cnt[26],i;scanf("%s",s);\/\/输入 for(i = 0;i < 26;i++) cnt[i]=0;\/\/先清空数组的值 for(i = 0;i < strlen(s);i++)\/\/扫描 cnt[s[i]-'a']++;\/\/统计 for(i = 0;i < 5;i++)\/\/输出 printf("%c:%d ",i...

谷城县13040057085: c语言泡沫法怎么用 请详细解答 谢谢 -
叱干昆盐酸: 冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面.即首先比较第1个和第2个数,将小数放前,大数放后.然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,...

谷城县13040057085: c语言中冒泡法是什么意思? -
叱干昆盐酸: 冒泡法是一种排序方法 冒泡法5 4 3 2 1 比如上面这5个数字我们把它按照由小到大的顺序排列, 从前往后相临两位比较大小,如果前一位比后一位大就把它俩 换位,5比4大就把5和4换位,得到45321 5又比3大 5和3换位 得到43521 依次类...

谷城县13040057085: c语言冒泡排序法 -
叱干昆盐酸: (1)基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒.即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换.(2)实例...

谷城县13040057085: c语言一维数组冒泡排序 -
叱干昆盐酸: 如果遇到相等的值不进行交换,那这种排序方式是稳定的排序方式. 原理:比较两个相邻的元素,将值大的元素交换到右边 思路:依次比较相邻的两个数,将比较小的数放在前面,比较大的数放在后面. (1)第一次比较:首先比较第一和第二...

谷城县13040057085: 在C语言编程中什么叫“冒泡法”?具体解释一下,真心谢谢 -
叱干昆盐酸: 排序用的,比如有三个数613从小到大排序,用冒泡法就是先把6和1比较把6(即大的那个数放到1的后面)现在就变成163然后再把6和3进行比较,再把大的数放到后面这样就变成136,在进行第二次比较,把1和3进行比较大的数再放在后面,这样136就排出来了!这样四个数 五个数 六个数 n个数的排序都可以按照这样的方法!用C语言实现需要两个循环,一个内循环和一个外循环,内循环就是指你不断把把两个数比较大小并把大的数放在后面的过程,执行完后你会发现最大的数是在最后了!但前面的数顺序认识乱的,你就需要第二次排序,经过第二次排序后你会发现第二大的数已经排在倒数第二的位置了,以此类推,想这样的循环就是外循环

谷城县13040057085: C语言分别用选择法和冒泡法将N个数按从大到小顺序排列 -
叱干昆盐酸: int a[100],i,j,k,temp;选择法: for(i=0;i<N;i++) { k=i; for(j=k+1;j<N;j++) if(a[k]<a[j]) k=j; temp=a[i];a[i]=a[k];a[k]=temp; }冒泡法: for(i=0;i<N;i++) for(j=0;j<N-i;j++) if(a[j]>a[j+1]) { temp=a[j];a[j]=a[j+1];a[j+1]=temp; }

谷城县13040057085: C语言 分别用两种方法给一维数组a[5]={6,2, - 2,5,7}排序 第一种方法是冒泡法(相邻两 -
叱干昆盐酸: 冒泡排序#include <stdio.h>//输出数组中的数据 void Output(int *a, int len);//冒泡排序 void Scort(int *a, int len); void main() { int a[5] = {6, 2, -2, 5, 7}; //输出排序前的数据 printf("排序前:"); Output(a,5); Scort(a,5);//调用冒泡排序函数 printf...

谷城县13040057085: 数据结构冒泡(c语言) -
叱干昆盐酸: #include#include#define MAXSIZE 10#define LT(a,b) ((a)typedef int KeyType; typedef struct { KeyType r[MAXSIZE+1]; int length; }SqList; void Bubble_Sort(SqList &L) { int i,j; bool flag; for(i=1;i{ for(j=1,flag=true;j{ if(LT(L.r[j+1],L.r[j])) { flag=false; L.r[0]...

谷城县13040057085: c 语言冒泡法怎么求 -
叱干昆盐酸: main() { int a[11];//这里是定义长度为11 int i,j,k,t; printf("input 10 number:\n"); for(i=1;i<11;i++)//这里是1-10,也就是10个数.不过,最好写0-10,因为定义习惯从0开始的,不然有越界的嫌疑. scanf("%d",&a[i]); printf("\n"); for(i=1;i<10;...

谷城县13040057085: c语言中的冒泡怎么弄 -
叱干昆盐酸: 对于冒泡:可以这样考虑 外层循环式控制一共有多少个泡需要排序, 这个当然要用循环 内层循环控制把某一个泡放到正确的位置, 这个也要用循环, 因为这个泡要和所有未排序泡比较一遍, 然后才能知道自己应该处的位置 这里有两个点,明...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网