十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
修改好了!!如下:
我们提供的服务有:成都网站设计、网站建设、微信公众号开发、网站优化、网站认证、加格达奇ssl等。为1000+企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的加格达奇网站制作公司
#includestdio.h
void bubble(int a[100], int n)
{
int i=0;
int j=0;
int temp=0;
char select; //选择
printf("Please Select size b/l: \n"); //选择从大到小或者从小到大
scanf("%s",select); //运行中就是这里有错误,select没有给我一个输入就自己跳过去了,很奇怪
//修改好了,%c改为%s
switch (select)
{
case 'l': //从小到大
for (j=1; jn; ++j)
{
for (i=0; in-j; ++i)
{
if (a[i] a[i+1])
{
temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
}
}
}break;
case 'b': //从大到小
for (j=1; jn; ++j)
{
for (i=0; in-j; ++i)
{
if (a[i] a[i+1])
{
temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
}
}
}break;
default: printf("error\n");
}
for (i=0; in; ++i) //输出排列好的数组
{
printf(" %d ", a[i]);
}
printf("\n");
}
void main()
{ int n=0;
int i=0;
int a[100]={0};
printf(" Please enter the number of array :\n");
scanf("%d", n); //输入数组元素的个数
printf(" Please enter the array :\n");
for (i=0; in; ++i) //输入数组里面的各元素
{
scanf("%d", a[i]);
}
bubble(a, n);
}
================================================
功能:冒泡排序
输入:数组名称(也就是数组首地址)、数组中元素个数
================================================
*/
/*
====================================================
算法思想简单描述:
在要排序的一组数中,对当前还未排好序的范围内的全部数,自上
而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较
小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要
求相反时,就将它们互换。
下面是一种改进的冒泡算法,它记录了每一遍扫描后最后下沉数的
位置k,这样可以减少外层循环扫描的次数。
冒泡排序是稳定的。算法时间复杂度O(n2)--[n的平方]
=====================================================
*/
void bubble_sort(int x[], int n)
{
int j, k, h, t;
for (h=n-1; h0; h=k) /*循环到没有比较范围*/
{
for (j=0, k=0; jh; 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后面的都是排序排好了的。*/
}
}
}
}
1、打开Visual stdio软件,在空项目里新建一个c语言程序空文件:
2、弹出的窗口选择C++文件,将文件扩展名改为“.c”点击添加完成新建c文件,之后就可以编写程序了:
3、这里从数组头部开始,不断比较相邻的两个元素的大小,让较大的元素逐渐往后移动(交换两个元素的值),直到数组的末尾,经过一轮的比较,就可以找到最大的元素,并将它移动到最后一个位置,然后依次类推直到数组的最后一个数比较完,最后输出结果;
4、最后需要执行程序,按下crtl+F5弹出程序的执行结果,就可以看到排序后的结果了:
#includeiostream
using namespace std;
void Sort(int a[],int n);
int main()
{
int i,n,a[1001];
cinn;
for(i=1;i=n;i++)
cina[i];
Sort(a,n);
for(i=1;i=n;i++)
couta[i]" ";
system("pause");
return 0;
}
void Sort(int a[],int n)
{
int i,j,x,flag;
for(i=1;i=n;i++)
{
flag=0;
for(j=1;j=n-i;j++)
if(a[j+1]a[j])
{
flag=1;
x=a[j];
a[j]=a[j+1];
a[j+1]=x;
}
if(flag==0)
break;
}
}
【注意】上面那个数组下标是从1开始的,本人习惯从1开始
还有一种超好的排序方法,我一直用它:
#includeiostream
#includealgorithm
using namespace std;
int main()
{
int n,i,a[10001];
cinn;
for(i=1;i=n;i++)
cina[i];
sort(a+1,a+n+1);//默认是升序
for(i=1;i=n;i++)
couta[i]" ";
system("pause");
return 0;
}
#includestdio.h
void sort(int a[],int n)
{
int i;
int j;
for(i=1;in;i++) //n个程序 排n-1次
{
for(j=0;jn-i;j++)
{
if(a[j]a[j+1]) //从小到达,前面的比后面的大,则互换。
{
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
}
int main()
{
int a[10]={1,3,5,7,9,2,4,6,8,10};
sort(a,10);
int i;
for(i=0;i10;i++)
{
printf("%d ",a[i]);
}
getchar();
return 0;
}