达人帮我冒泡排序一下

作者&投稿:曹虎 (若有异议请与网页底部的电邮联系)
冒泡法排序,求具体~

这是选择排序,不是冒泡排序的呀。它们的相同之处在于,每趟都是得到无序区中的最小元,并将其放到无序区的开始。但它们得到最小元的方法是不同的。冒泡排序通常是从后向前扫描,然后最小元从后一步一步慢慢移到无序区的前面,而选择排序则是从前向后快速扫描一趟,扫描过程中一般不做数据的移动,只是先定位最小元的位置,然后将最小元直接和首元进行交换。在一趟冒泡过程中,最坏的情况下将有n次交换(n为无序区元素的个数),而进行一趟选择时,最坏情况下也只需要一次交换即可。

#include#include #include #define n 5000void print1(int a[]);void main(){int i,j,t;int a[n];srand(time(NULL));//产生随机数组for(i=0;i<n;i++){ a[i] = rand()%1000+1;}//冒泡法排序//找第i个最小元素for(i=0;i<n-1;i++){ for(j=0;j<=n-i-1;j++) { if(a[i]<a[j]) {int t=a[i];a[i]=a[j];a[j]=t; }} } print1(a); system("pause");} //打印数组void print1(int a[]){ int c=0; for(;c<n;c++) { printf("%d",a[c]); } printf("
");}你的程序出了些小问题,给你改正回来了,现在能运行了

C
D
第一个按降序排序。
第二个按升序排序。
按升序排序的冒泡算法的完整的程序如下,程序在tc2.0下运行良好:(如要按降序排序只要将if(R[j+1]<R[j])这句改为if(R[j+1]>R[j])即可)

#include <stdio.h>
#define MAX 255
int R[MAX];
void Bubble_Sort(int n)
{ /* R(l..n)是待排序的文件,采用自下向上扫描,对R做冒泡排序 */
int i,j;
int exchange; /* 交换标志 */
for(i=1;i<n;i++)
{ /* 最多做n-1趟排序 */
exchange=0; /* 本趟排序开始前,交换标志应为假 */
for(j=n-1;j>=i;j--) /* 对当前无序区R[i..n]自下向上扫描 */
if(R[j+1]<R[j])
{ /* 交换记录 */
R[0]=R[j+1]; /* R[0]不是哨兵,仅做暂存单元 */
R[j+1]=R[j];
R[j]=R[0];
exchange=1; /* 发生了交换,故将交换标志置为真 */
}
if(!exchange) /* 本趟排序未发生交换,提前终止算法 */
return;
}
}

void main()
{
int i,n;
clrscr();
puts("Please input total element number of the sequence:");
scanf("%d",&n);
if(n<=0||n>MAX)
{
printf("n must more than 0 and less than %d.\n",MAX);
exit(0);
}
puts("Please input the elements one by one:");
for(i=1;i<=n;i++)
scanf("%d",&R[i]);
puts("The sequence you input is:");
for(i=1;i<=n;i++)
printf("%4d",R[i]);
Bubble_Sort(n);
puts("\nThe sequence after bubble_sort is:");
for(i=1;i<=n;i++)
printf("%4d",R[i]);
puts("\n Press any key to quit...");
getchar();
getchar();
}

c


C++中先输入30人的成绩再用冒泡排序法将成绩排序
constintsize=(sizeof(a)\/sizeof(a[0]));这句是对的,错的是你的排序体 这里a[]有10个元素,即size=10;首先说一下冒泡排序法的思想:设为降序排序a[0]>a[1]>...1.a[]是一个无序的序列。如果a[]是已经降序排序好的,我们也设为无序,即 它作为一个序列参数,人可以看出他是有序...

求教哪位大神能帮我把这个冒泡排序的流程图画出来,看着这些代码头都大...
流程图不太好画,我说一下过程,希望能帮到你 你选中的代码的意思就是,如果数组中相邻两个数中前者比后者大,就将两个数互换,这样在经过了一次外层循环(内层循环进行了array.length次)后,最大的数就被放到了数组的最后位置(本题就是856放在了最后),然后再循环一次,第二大的数(836)就...

我用C语言编的冒泡排序法,编译通过了,但结果却不对,谁能帮我看一下错...
例如 输入数据 5 4 3 2 1 一共5个元素,四次冒泡之后就有序了,不用比较5次。i=0 时 进行第一次冒泡, j=0;j<5 这样你要比较5次,最后一次会比较if(a[4]>a[5])虽然你只定义了a[5],但是a[5]的位置一定存在值,会导致你的数据出错 改成 for(i=0;i<4;i++)for(j=0;j<4...

关于冒泡排序!急!!!
这样不更简单:import java.util.Arrays;public class test111 { public static void main(String[] args) { int[] a = { 5, 9, 7, 1 };Arrays.sort(a);for (int i = 0; i < a.length; i++) { System.out.print(a[i]);} } } 你这个问题 就是J应该初值应该是0不是1 publ...

求、大家帮我解释JAV一段冒泡排序
自己画图来理解,我当初也是画图理解的 int temp = arr[j];arr[j] = arr [j+1];\/\/ arr[j+1] = temp;\/\/ 很好理解的,就是把arr[j] , arr [j+1]的值交换位置,但是如果直接arr[j] = arr [j+1],这样的话,arr[j]的值就被覆盖了,所以要先把arr[j]的值提出来放一边temp,...

冒泡排序,,,大神帮我看一下为啥它按输入的顺序输出了
多了一个分号,去掉就可以了

冒泡排序错哪里了 大家帮我解释一下
数组的传递不是这么传,a[N]表示的数组a的第N个元素值;maopao(a[N]) 改成 maopao(a)

C++编程:已知一个数组有一百个数,请对这个数组进行排序.
\/\/给你一个冒泡排序的代码 如果要排100个数的话 你把size改成 100就可以 include <iostream.h> define size 10 \/\/排序数组的大小,可以自己任意设置值 void MP_sort(int a[],int a_size); \/\/冒泡函数申明 void main(){ int array[size];cout<<"请你输入排序的数组:"<<endl;for(...

数据结构一道排序题怎么排啊?我想知道思路 答案已经有请告诉帮我分析...
通过一躺排序将45放到应该放的位置K,这里K=6,那么再对S[1。。5]和S[6。。10]分别进行快速排序。一般来说,冒泡法是程序员最先接触的排序方法,它的优点是原理简单,编程实现容易,但它的缺点就是--程序的大忌--速度太慢。下面我介绍一个理解上简单但编程实现上不是太容易的排序方法,我不知道...

快速排序算法原理与实现
快速排序的基本思想就是从一个数组中任意挑选一个元素(通常来说会选择最左边的元素)作为中轴元素,将剩下的元素以中轴元素作为比较的标准,将小于等于中轴元素的放到中轴元素的左边,将大于中轴元素的放到中轴元素的右边。然后以当前中轴元素的位置为界,将左半部分子数组和右半部分子数组看成两个新的...

解放区17314452633: 求c语言达人帮我看看!!!!这是一个利用冒泡排序为数组排序的问题!!!!! -
长沙珍德宝: #include#define b 10 /*这是一个10个元素的数组,lz写成了3*/int a[b];void paixu(){ int i,j,tep; for(i=0;i { for(j=0;j if(a[j]>a[j+1]) { tep=a[j]; a[j]=a[j+1]; a[j+1]=tep; } }}main(){ int i,j; printf("please input 10 numbers:");for(i=0;i { scanf("%d",&a[i]); } paixu(); for(j=0;j printf("%d",a[j]); /*这个地方应该是a[j],不是a[i]*/}

解放区17314452633: C++冒泡法排序哪位大人帮偶这个做做.偶做了n久都不行!输入10个整数,将它们从大到小排序后输出.(用冒泡法)运行示例:Enter 10 integers:1 4 –9 99 ... -
长沙珍德宝:[答案] 答案: 5、D 6、A 7、C 8、C 完整源程序如下: #include void main( ) { int i,j,t,a[10]; printf("Enter 10 integers:"); for (i=0;i

解放区17314452633: 谁帮我写一个冒泡排序 -
长沙珍德宝: int[] a = {21,23,4324,2342,12};for(int i=0;i<a.length;i++){for(int j=i+1;j<a.length-1;j++){if(a[i]<a[j]){int k=a[i];a[i]=a[j];a[j]=k;}}}

解放区17314452633: 大神,能帮我冒泡法排序MATLAB程序搞下吗? -
长沙珍德宝: 有个函数[A,B]=sort(数组名,排列方法) 其中A为数组排序后的存放位置,B为排序前的数组下标

解放区17314452633: 能请各位给我编程实现一个冒泡排序算法??? -
长沙珍德宝: #include#define M 10 using namespace std; void maopao1(int data[M]) { int i,j,t; for(i=1;idata[j+1]) {t=data[j];data[j]=data[j+1];data[j+1]=t;} cout>data[i]; maopao1(data);//从小到大 maopao2(data);//从大到小 system("pause"); re弗长缔短郫的惦痊定花turn 0; }

解放区17314452633: 急求,请编程高手用冒泡排序法帮我编写一个找出一个整数数组中第K大的数的程序~ -
长沙珍德宝: 数组为:12 3 5 6 33 78 23 23 99 请问要找第几大:333 Press any key to continue#include "stdio.h" int main() { int i,j,tmp,a[]={12,3,5,6,33,78,23,23,99}; printf("数组为:"); for (i=0;i<9;i++) { printf("%d ",a[i]); } printf("\n"); for (i=0;i<10-...

解放区17314452633: 哪位大神,帮我用C++程序解释一下冒泡排序法.谢谢了 -
长沙珍德宝: #include using namespace std; void bubbleSort(int a[],int size); int main() { int array[]={34,65,12,43,67,5,78,10,3,70},k; int len=sizeof(array)/sizeof(int); cout for(k=0;k cout cout bubbleSort(array,len); cout for(k=0;k cout cout system("pause"); return 0...

解放区17314452633: java 冒泡排序,帮我解释一下个别语句,谢谢! -
长沙珍德宝: a是一个整型数组.for(int i : a)相当于 for(int index=0;index int i = a[index]; } 这个是在jdk1.5之后才可以.冒泡排序中的第一个循环是决定比较的轮数.2个数比较1轮.3个数比较2轮.n个数比较n-1轮.所以第一的length-1就是这个道理.至于第二个length-1是数组的所以的位置了.如果是length的话,那么就会数组下标越界的.

解放区17314452633: 大侠帮忙,冒泡排序 -
长沙珍德宝: 外层循环是一共需要的次数内层循环是每一趟循环中需要比较的次数

解放区17314452633: 帮我看看冒泡排序
长沙珍德宝: 最后一个循环错了,最后还少了一个大括号 for(i=0;i<10;i++){printf("%d",a[i]); printf("\n"); }

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