#include stdio.h
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()
fun(num);
#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);
couta[i]"?";
system("pause");
return?0;
void?Sort(int?a[],int?n)
int?i,j,x,flag;
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开始
还有一种超好的排序方法,我一直用它:
#includealgorithm
int?n,i,a[10001];
sort(a+1,a+n+1);//默认是升序
冒泡法排序函数如下:
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的数(大于或小于取决于你想升
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 为止*/
以上就是土嘎嘎小编为大家整理的c语言编写冒泡函数相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!