自定义函数冒泡排序c语言 c语言冒泡排序改进代码

C语言课程作业,通过定义函数实现冒泡排序过程 。void sortMaopao(int *arr,int n)
{
int i,j,tmp;
if(n100)
return ;
for(i=0;in-1;i++)
{
for(j=i+1;jn;j++)
{
if(*(arr+i)*(arr+j))
{
tmp=*(arr+i);
*(arr+i)=*(arr+j);
*(arr+j)=tmp;
}
}
}
}
这个函数可以帮你实现由大到小排序 , 如果由小到大的话只需把if(*(arr+i)*(arr+j))这一句里面的 改成 就行了,输出的话可以在主函数调用之后再打印输出就行 。
C语言冒泡排序 。#includestdio.h
void main()
{
int a[10];
int i,j,t;
printf("input 10 numbers:\n");
for(i=0;i10;i++)
scanf("%d",a[i]);
for(j=0;j9;j++) /*进行9次循环 实现9趟比较*/
for(i=0;i9-j;i++) /*在每一趟中进行9-j次比较*/
if(a[i]a[i+1]) /*相邻两个数比较,想降序只要改成a[i]a[i+1]*/
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf("the sorted numbers:\n");
for(i=0;i10;i++)
printf(" %d",a[i]);
}
扩展资料:
冒泡排序算法的运作
1、比较相邻的元素 。如果第一个比第二个大(?。?nbsp;, 就交换他们两个 。
2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对 。这步做完后,最后的元素会是最大(?。┑氖?。
3、针对所有的元素重复以上的步骤,除了最后已经选出的元素(有序) 。
4、持续每次对越来越少的元素(无序元素)重复上面的步骤 , 直到没有任何一对数字需要比较,则序列最终有序 。
简单的表示
#include stdio.h
void swap(int *i, int *j)
{
int temp = *i;
*i = *j;
*j = temp;
}
int main()
{
int a[10] = {2,1,4,5,6,9,7,8,7,7};
int i,j;
for (i = 0; i10; i++)
{
for (j = 9; ji; j--)//从后往前冒泡
{
if (a[j]a[j-1])
{
swap(a[j], a[j-1]);
}
}
}
for (i = 0; i10; i++)
{
printf("%d\n", a[i]);
}
return 0;
}
参考资料来源:冒泡排序-百度百科
C语言冒泡排序法代码冒泡排序是排序算法的一种 , 思路清晰,代码简洁,常被用在大学生计算机课程中 。“冒泡”这个名字的由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端 , 故名 。这里以从小到大排序为例进行讲解 。基本思想及举例说明
冒泡排序的基本思想就是不断比较相邻的两个数,让较大的元素不断地往后移 。经过一轮比较就,选出最大的数;经过第2轮比较 , 就选出次大的数,以此类推 。下面以对 3 2 4 1 进行冒泡排序说明 。
1.这个算法用rand函数产生新的要排序的数据,与已有的有序数列中的数据依次比较,如果遇到比他大的数据 , 就从该数据开始,一直交换到末尾,达到一个插入的效果 。从而形成有序的数列 。
2.此外,只用rand函数并不能达到真正随机的效果 。如果要实现真正随机的效果,还要配合srand函数才行 。
3.具体代码如下:#include "stdio.h"#include "stdlib.h"void main(){int a[10],temp,r; printf("请输入一个种子\n"); scanf("%d",r);srand(r); for(int i=0;i9;i++)。
C语言自定义函数 数组冒泡排序 返回排序后的数组,怎么返回一个数组 。通常操作数组的时候,你发送的实参就是数组的首地址;所以直接void类型就可以;但是如果一定要设返回值的话;直接把形参接收的首地址返回就可以了!
你的代码中,有很大的问题;如果是的代码中这样设定要想不出问题,那么那个数组要在堆中分配;即malloc一块地址;
其次 , int paixu() 改成int *paixu();

推荐阅读