㈠ 数据结构 冒泡排序 c语言 源代码 急用啊
void bubble_sort(int *x, int n)
{
int j, k, h, t;
for (h=n-1,h=k; h>0; h--) /*循环到没有比较范围*/
{
for (j=0, k=0; j<h; j++) /*每次预置k=0,循环扫描后更新k*/
{
if (*(x+j) > *(x+j+1)) /*大的放在后面,小的放到前面*/
{
t = *(x+j);
*(x+j) = *(x+j+1);
*(x+j+1) = t; /*完成交换*/
k = j; /*保存最后下沉的位置。这样k后面的都是排序排好了的。*/
}
}
}
}
㈡ C语言中冒泡排序法(又称起泡排序法)得具体程序
冒泡法我是这样理解的,便于掌握和记忆。首先冒泡是n长度的数组开始的两位开始,逐位双双比较一直到最后两个,所以最外循环比较了n-1次。第一个数比较了以后就不比了,从第二个开始,一直比较到数组末尾,于是内循环的起始位置不同,每次都是外侧i的值加0,也就是i。但结束的限制和外层循环是相同的。于是写法为for (i=0;i<n-1;i++)
{
for(j=i;j<n-1;j++)
㈢ 冒泡排序算法的C语言代码,要求有运行过程即每运行一步就输出一次结果
void del(int *a,int n)//冒泡
{
int i,j,k;
for(i=0;i<=n-2;i++)
for(j=0;j<=n-2-i;j++)
{ if(a[j]>a[j+1])//如果你要从大到小排序就改>为<
{
k=a[j];
a[j]=a[j+1];
a[j+1]=k;
}
for( k=0;k<n;k++)
printf("%d\t",a[k]);
printf("\n");
}
按照楼主要求更改后的函数
㈣ c语言冒泡排序法
(1)基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。
(2)实例:
(3)代码解释:
#include<stdio.h>
int main()
{
int a[10];
int i,j,t,temp;//temp记录临时中间值
printf("请输入10个数:");
for (i=0;i<10;i++)
{
scanf("%d",&a[i]);//记录输入的十个数
}
for (j=1;j<=9;j++)
{
t=10-j;
for (i=0;i<t;i++)
{
if (a[i]>a[i+1]) {
//交换两数的位置
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
}
for (i=0;i<=9;i++)
{
printf("%d ",a[i]);
}
return 0;
}
望采纳!
㈤ 冒泡排序的C语言代码
程序如下:
#include<malloc.h>
#include<stdio.h>
intmain(void)
{
inti,j,t,num;
int*p;
printf("请输入要排序的数的个数:num=");
scanf("%d",&num);
p=(int*)malloc(num*sizeof(int));
//输入要排序的数
for(i=0;i<num;++i)
{
printf("请输入第%d个要排序的数p[%d]= ",i+1,i);
scanf("%d",&p[i]);
}
//冒泡排序
for(i=0;i<num-1;++i)
{
for(j=0;j<num-1-i;++j)
{
if(p[j]>p[j+1])//>表示升序<表示降序
{
t=p[j];
p[j]=p[j+1];
p[j+1]=t;
}
}
}
//输出已经排序好的数
printf("输出已经排序好的数");
for(i=0;i<num;++i)
{
printf("%d",p[i]);
}
printf(" ");
return0;
}
程序运行结果:
随机输入十个数:
㈥ 数据结构(C++)冒泡排序的代码
冒泡排序数组s[]的元素,从大到小。
for(int i=1;i!=n;i++) //外层循环
{
for(int j=0;j!=n-i;j++) //内层循环
{
if(s[j]<s[j+1]) //比较相邻的两个元素
{
temp=s[j]; //符合条件,交换
s[j]=s[j+1];
s[j+1]=temp;
}
}
}