#include stdio.h
10年积累的成都网站设计、成都网站建设、外贸网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先做网站后付款的网站建设流程,更有索县免费网站建设让你可以放心的选择与我们合作。
void fun(int *num)
{
int temp;
for(int i=0; i10; ++i)
for(int j=0; j10-i-1; ++j)
{
if(num[j]num[j+1])
{
temp=num[j];
num[j]=num[j+1];
num[j+1]=temp;
}
}
}
void main()
{
int num[10]={3,2,4,1,5,6,4,3,9,8};
fun(num);
for(int i=0; i10; ++i)
printf("%-2d",num[i]);
}
#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;
}
冒泡法排序函数如下:
void bubble(int a[],int n)
{int i,j,t;
for(i=0;in-1;i++)/*共进行n-1轮*/
for(j=0;jn-1-i;j++)/*每轮在前n-i个数中比较*/
if(a[j]a[j+1]) /*若相邻元素逆序*/
{t=a[j]; a[j]=a[j+1];a[j+1]=t;}/*就交换*/
}
void sort(int *a, int left, int right)
{
if(left = right)/*如果左边索引大于或者等于右边的索引就代表已经整理完成一个组了*/
{
return ;
}
int i = left;
int j = right;
int key = a[left];
while(i j) /*控制在当组内寻找一遍*/
{
while(i j key = a[j])
/*而寻找结束的条件就是,1,找到一个小于或者大于key的数(大于或小于取决于你想升
序还是降序)2,没有符合条件1的,并且i与j的大小没有反转*/
{
j--;/*向前寻找*/
}
a[i] = a[j];
/*找到一个这样的数后就把它赋给前面的被拿走的i的值(如果第一次循环且key是
a[left],那么就是给key)*/
while(i j key = a[i])
/*这是i在当组内向前寻找,同上,不过注意与key的大小关系停止循环和上面相反,
因为排序思想是把数往两边扔,所以左右两边的数大小与key的关系相反*/
{
i++;
}
a[j] = a[i];
}
a[i] = key;/*当在当组内找完一遍以后就把中间数key回归*/
sort(a, left, i - 1);/*最后用同样的方式对分出来的左边的小组进行同上的做法*/
sort(a, i + 1, right);/*用同样的方式对分出来的右边的小组进行同上的做法*/
/*当然最后可能会出现很多分左右,直到每一组的i = j 为止*/
}
1、打开Visual stdio 2019软件新建空白c文件,在源文件处右击鼠标,选择添加下面的新建项,此时会弹出窗口:
2、弹出的窗口选择C++文件,将文件扩展名改为“.c”点击添加完成新建c文件,之后就可以编写程序了:
3、接下来就可以编写程序了,首先最前面的部分为输入数字的部分,之后的程序会对用户输入的数字就行排序,最后则是将结果打印出来。冒泡排序需要用到两层循环,第一层循环遍历数组中的元素,第二层则进行两两比较,如果顺序不对就要对其进行换位,直到排序完成:
4、最后执行程序观察结果,按下crtl+F5弹出程序,随意输入10个数,按下回车键执行结果,此时就可以看到排序后的结果了。以上就是c语言冒泡排序程序的演示:
#include stdio.h
void mysort(int num[],int n){
int temp;
for(int i=1;in;i++){
for(int j=0;jn;j++)
if(num[i]num[j]){
temp=num[i];
num[i]=num[j];
num[j]=temp;}
}
printf("\n由大到小排列的:\n");
for(int t=0;tn;t++)
printf("%d ",num[t]);
printf("\n");
}
int main()
{
int n;
int num[100];
scanf("%d",n);
for(int i=0;in;i++)
scanf("%d",num[i]);
mysort(num,n);
return 0;
}