编写函数 void sort(int array[ ] , int n ) 函数用冒泡法对一个数组进行排序.

编写函数
void sort(int array[ ] , int n )
函数用冒泡法对一个数组进行排序。然后编写main()函数调用sort()函数对某一数组排序。
visual C++ 6.0

    冒泡排序算法的执行过程如下:

    1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。

    2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

    3、针对所有的元素重复以上的步骤,除了最后一个。

    4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

代码如下:

void sort(int array[], int n)
{
    int i, j, temp;
    for (j = 0; j < n - 1; j++)
        for (i = 0; i < n - 1 - j; i++)
        {
            if(array[i] > array[i + 1])
            {
                temp = array[i];
                array[i] = array[i + 1];
                array[i + 1] = temp;
            }
        }
}

    冒泡排序的平均时间复杂度和最坏时间复杂度都为O(n^2),如果想获得比较快的速度,可采用时间复杂度低的排序算法,比如:Shell排序和快速排序

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-06
#include<stdio.h>

void sort(int *array, int n )//本人不习惯在函数中用array[]的写法,或者说这种写法是错的
{
int tmp;
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
{
if(array[i]<array[j])//降序,升序请把"<"改成">"
{
tmp=array[i];
array[i]=array[j];
array[j]=tmp;
}
}
}
int main(void)
{
int arr[5]={1,2,4,3,5};
sort(arr,5);
for(int i=0;i<5;i++)
{
printf("%d\t",arr[i]);
}
}本回答被提问者和网友采纳
第2个回答  2013-06-13
#include "stdio.h"
#define N 5
void sort(int array[ ] , int n )
{
int i,j,d;
for(i=0;i<n;i++)
{
for(j=0;j<n-i-1;j++)
{
if(array[j]>array[j+1])//升序,如果是降序,>改为<
{
d=array[j];
array[j]=array[j+1];
array[j+1]=d;
}
}
}
}
void main()
{
int i;
int arr[N];
for(i=0;i<N;i++)
scanf("%d",&arr[i]);
sort(arr,N);
for(i=0;i<N;i++)
{
printf("%d ",arr[i]);
}
}