C语言冒泡排序问题!不会写了。。。。

作者&投稿:郅缪 (若有异议请与网页底部的电邮联系)
请教C语言冒泡排序法,由大到小排,按我自己理解写的,为什么不对,如下:~

if(a[j]<a[j+1]){int temp;temp=a[j];a[j]=a[j+1];a[j+1]=temp; //这里应该是+1不是+i 大马虎了 }

两处需要改动:
for(i=k;i<n-1;i++)改为 for(i=k;i<n;i++)
需要将在num[i]=num[k];前面加上一行min=num[i];否则不能实现值的交换.而且数据会被覆盖.
另外提醒你一下,你所使用的不是冒泡排序,应该是选择排序.

#include<stdio.h>

void bubbleSort(char arr[],int n)

{

    int i,j,temp;

    for (i = 1; i < n; i++)

    {

        for (j = 0; j < n-i; j++)

        {

            if (arr[j] > arr[j+1])

            {

                temp = arr[j];

                arr[j] = arr[j+1];

                arr[j+1] = temp;

            }

        }

    }

}

   int main(int argc, char * argv[]) {

  int i;

char m[ ] = {'W', 'R', 'C', 'F', 'O', 'Y', 'H', 'A', 'L', 'T'};

printf("

冒泡排序");

    bubbleSort(m, 10);

    for ( i = 0; i < 10; i++)

    {

        printf("%c ",m[i]);

    }

    printf("
");

    system("pause");

}



这个,你得把bubbleSort函数的第一个参数(也就是int arr[])改成char[]类型(char arr[])
另外,你的函数bubbleSort两个循环不对,循环次数你要考虑清楚(记住外层0到n-1,内层0到n-i-1),用于临时存储的temp你得改为char型,不然会有问题
还有,因为是字符数组,所以你最后的printf你得使用%c占位符,不能再用输出整数用的%d


用语言描述冒泡排序的实现
冒泡排序的基本原理是,从数组的第一个元素开始,比较相邻的两个元素,如果它们的顺序错误就把它们交换过来。这样,每一对相邻元素进行比较和可能的交换后,最大的元素就会被交换到数组的末尾。这个过程在每一轮迭代中都会重复,但每一轮结束后,未排序的元素范围会缩小一个,因为末尾的元素已经被排好序...

冒泡排序如何使用Java语言完成?
public class 冒泡 { public static void main(String[] args) { int []arr=new int[] {12,45,33,46,3}; System.out.println("排序之前的元素顺序:"); for(int i=0;i<arr.length;i++) { System.out.print(arr[i]+" "); } int t; for(int j=0;j<arr.length-1;j++) {...

c语言冒泡排序法代码一直排序错误,有时只能排前两个,不明白原因,请问究 ...
} \/\/冒泡排序算法 for(j=0;j<n-1;j++) \/\/外层循环,控制排序次数 { for(i=0;i<n-1-j;i++) \/\/内层循环,控制每次排序的范围 { if(num[i] > num[i+1]) \/\/如果相邻元素逆序,则交换它们的位置 { temp = num[i];num[i] = num[i+1];num[i+1] = temp...

C语言中冒泡排序法和选择排序法有哪些不同
1、冒泡排序法:一趟一趟的将两个相邻的数进行交换如果有10个数则需要排9躺,如果是从 大到小输出则需要每次将后一个数和前一个数进行比较将较大的数赋值给钱一个数,将较小的数赋值给后一个数,其实就是两个数交换,那么第一趟交换完毕后,最 小的数便出现在了数组的最后面,然后进行第二趟...

C语言冒泡排序法代码是什么?
所谓冒泡排序法,就是对一组数字进行从大到小或者从小到大排序的一种算法。1、具体方法是,相邻数值两两交换。从第一个数值开始,如果相邻两个数的排列顺序与我们的期望不同,则将两个数的位置进行交换(对调);如果其与我们的期望一致,则不用交换。重复这样的过程,一直到最后没有数值需要交换,则...

c语言中冒泡问题。为什么冒泡排序出来的有一个是乱码,而另一种算法排序...
冒泡排序的外层循环是for(i=0; i<n-1; i++),内层循环是for(j=0; j<n-1-i; j++),每次比较的两个元素是a[j]和a[j+1]。你的n=5,所以外层循环应该是for(i=0; i<4; i++),内层循环应该是for(j=0; j<4-i; j++)。

C语言:采用冒泡排序方法,对10个数按由小到大的的顺序排序
printf("排序后的结果是:\\n");for(i=0;i<10;i++){ printf("%d",a);} printf("\\n");return 0;} 冒泡法:算法分析:如果有n个数,则要进行n-1趟比较。在第1趟比较中要进行n-1次相邻元素的两两比较,在第j趟比较中要进行n-j次两两比较。比较的顺序从前往后,经过一趟比较后,将最...

c语言中冒泡排序是怎么工作的?
int main(){ int t,a,b,c;scanf("%d%d%d",&a,&b,&c);if(a<b){ t=a,a=b,b=t;} if(a<c){ t=a,a=c,c=t;} if(b<c){ t=b, b=c, c=t;} printf("%d %d %d\\n",a,b,c);return 0;} 原理就是运用冒泡算法,把最大的数浮在最上面,而小的数就下沉,最后...

c语言冒泡排序程序怎么写?
冒泡排序需要用到两层循环,第一层循环遍历数组中的元素,第二层则进行两两比较,如果顺序不对就要对其进行换位,直到排序完成:4、最后执行程序观察结果,按下crtl+F5弹出程序,随意输入10个数,按下回车键执行结果,此时就可以看到排序后的结果了。以上就是c语言冒泡排序程序的演示:

冒泡排序c语言
冒泡排序就是把小的元素往前调或者把大的元素往后调:比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,是不会再交换的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一...

富川瑶族自治县15882068001: c语言冒泡排序的两种写法 -
翟竿附桂: 排序有一个更好的写法插入法 排序数组a[n].int key; int i; for(j=1;j<n,j++) { key=a[j]; i=j-1; while(i>0&&a[i]>key) { a[i+1]=a[i]; i=i-1; } a[i+1]=key; } 希望给你点启发.

富川瑶族自治县15882068001: C语言冒泡法排序问题 -
翟竿附桂: #include"stdio.h" main() { int a[5],*p,i,t,j; for(i=0;i<5;i++) scanf("%d",&a[i]); printf("\n"); for(i=0;i<5;i++) //改成for(i=0;i<4;i++) { for(j=0;j<5;j++)//改成for(j=0;j<4-i;j++) if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=a[j];//改成a[j+1]=t; } } for(i=0;i<5;i++) printf("%d",a[i]);

富川瑶族自治县15882068001: C语言:编写一个程序用冒泡排序实现升序排列 -
翟竿附桂: 1、首先打开一个空白的C语言文件,首先先定义一组待排序的数列以及各个变量,接着就是用来处理排序的逻辑: 2、冒泡排序的逻辑是一组数从第一个数值开始,如果相邻两个数的排列顺序与期望不同,则将两个数的位置进行交换,重复这样的过程直到最后一个数不需要交换则排序完成,如果有N个数需要排序,则需要进行(N-1)趟的比较: 3、最后编译运行程序,观察最终排序的结果,可以看到数字被从小到大的排列好了,以上就是C语言冒泡排序实现的过程:

富川瑶族自治县15882068001: C语言数组冒泡排序法题目求解 -
翟竿附桂: 如果要解决这个问题,用结构体更加的方便,用数组会比较麻烦一些,不过是可以解决的.#include <stdio.h> #include <math.h> #include <string.h> #define stu_num 5 #define sub_num 4 //计算个人总成绩 void count(int a[stu_num][sub_num+1]) ...

富川瑶族自治县15882068001: C - Free教程之怎么写C语言的冒泡排序
翟竿附桂: 方法/步骤 1、第一步我们打开C-Free5.0然后建立一个名字叫排序.c的空白文件输入基本格式保持.如下图所示. 2、然后我们开始写程序,要进行数值的排序,我们自...

富川瑶族自治县15882068001: c语言一维数组冒泡排序 -
翟竿附桂: 如果遇到相等的值不进行交换,那这种排序方式是稳定的排序方式. 原理:比较两个相邻的元素,将值大的元素交换到右边 思路:依次比较相邻的两个数,将比较小的数放在前面,比较大的数放在后面. (1)第一次比较:首先比较第一和第二...

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

富川瑶族自治县15882068001: C语言用冒泡法输入一个字符升序排列 急! -
翟竿附桂: #include <iostream.h>#include <string.h>#include <stdio.h>#include <stdlib.h>/* 冒泡排序法 */ void Bublesort(char a[],int n) { int i,j; char k; for(j=0;j<n;j++) /* 气泡法要排序n次*/ { for(i=0;i<n-j;i++) /* 值比较大的元素沉下去后,只把剩下的元素中的...

富川瑶族自治县15882068001: 求大神给我说一下C语言链表用冒泡排序怎么写啊? -
翟竿附桂: 1、交换链表中各节点的数据,不交换节点;2、交换节点,即节点link指针的内容.下面以第一种思路为例:void sort(LinkList *L) { int i,j,t; LinkList *p = L; int count = 0; while(p->link != NULL) { count++; p = p->link; } for(i=0;i { p = L; for(j=0;j { if(p->data > p->link->data) { t=p->data; p->data = p->link->data; p->link->data=t; } p = p->link; } } }

富川瑶族自治县15882068001: 我写的c语言冒泡法排序总是不对,求高手指点!! -
翟竿附桂: for(i=1;i<11;i++) printf("%d,",n[i] ); 改成 for(i=0;i<1;i++) printf("%d,",n[i] ); C的下标从0开始的

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