黑马程序员技术交流社区
标题:
如果要对四个变量a,b,c,d(都已经有值了)用冒泡法排序 该如何弄
[打印本页]
作者:
云霄之上
时间:
2014-7-16 01:22
标题:
如果要对四个变量a,b,c,d(都已经有值了)用冒泡法排序 该如何弄
如果要对四个变量a,b,c,d(都已经有值了)用冒泡法排序 该如何弄
作者:
⒈心只霸占沵
时间:
2014-7-16 08:57
int main()
{
int a=1;
int b=5;
int c=3;
int d=4;
int[] array=Sort(a,b,c,d);
for(int i=0;i<array.length;i++)
{
System.out.println(array);
}
return 0;
}
//不知道C里有没有可变参数这个说法,OC里有,不行就弄个OC的项目试试
int[] Sort(int...arr)
{
for(int i=0;i<arr.length-1;i++)
{
for(int j=i;j<arr.length-i-1;j++)
{
if(arr[j+1]>arr[j])
{
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
return arr;
}
复制代码
作者:
温天恩
时间:
2014-7-16 08:58
#include <stdio.h>
// 定义一个主函数,作为程序的入口
int main()
{
// 定义两个变量用于for循环条件变量
int i,j;
// 定义四个变量用来存放abcd
int a = 10;
int b = 15;
int c = 2;
int d = 9;
// 定义一个数组x用来存放abcd
int x[4] = {a,b,c,d};
// 定义temp用于冒泡排序交换变量值
int temp;
// 冒泡排序 将a,b,c,d降序排序,i表示排序的趟数,j表示每趟排序的比较次数
for (i = 0; i<3; i++)
{
for(j = 0;j<3-i;j++)
{
if (x[j] < x[j+1])
{
// 当前一个元素小于后一个元素时,交换它们的位置
temp = x[j];
x[j] = x[j+1];
x[j+1] = temp;
}
}
}
// 定义一个数组y用来存放abcd标志
char y[4];
// 将数组x与数组y的变量和标志一一对应
for (i = 0; i<4; i++)
{
// 确定排序后a的位置
if(x[i] == a && y[0] != 'a' && y[1] != 'a' && y[2] != 'a' && y[3] != 'a')
{
y[i] = 'a';
}
// 确定排序后b的位置
else if(x[i] == b && y[0] != 'b' && y[1] != 'b' && y[2] != 'b' && y[3] != 'b')
{
y[i] = 'b';
}
// 确定排序后c的位置
else if(x[i] == c && y[0] != 'c' && y[1] != 'c' && y[2] != 'c' && y[3] != 'c')
{
y[i] = 'c';
}
// 确定排序后d的位置
else
{
y[i] = 'd';
}
}
// 降序打印输出每个字母出现的次数
for (i = 0; i<4; i++)
printf("%c=%d\n",y[i],x[i]);
return 0;
}
复制代码
你看下,我做的是降序排序abcd的值,升序排序你对比着写,只要理解了冒泡排序过程,写代码并不难。
作者:
yingzhuo1314
时间:
2014-7-16 16:58
struct paixu
{
char m;
int n;
}a[4];
#include <stdio.h>
void main()
{
a[0].n=3;a[1].n=8;a[2].n=5;a[3].n=2;
a[0].m='a';a[1].m='b';a[2].m='c';a[3].m='d';
int i,j,flag,temp;
char temp1;
for(i=3;i>0;--i)
{
flag=0;//变量flag用来标记本趟排序是否发生了变化
for(j=1;j<=i;++j)
if(a[j-1].n>a[j].n)
{
temp=a[j].n;
a[j].n=a[j-1].n;
a[j-1].n=temp;
temp1=a[j].m;
a[j].m=a[j-1].m;
a[j-1].m=temp1;
flag=1;//如果没发生变换flag值为0,发生交换则改为1
}
if(flag==0) //一趟排序过程中没有发生元素交换,则证明序列有序,排序结束
break;
}
printf("排序后的结果:\n");
for(i=0;i<4;++i)
printf("%c %d\n",a[i].m,a[i].n);
printf("\n");
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2