我需要一个程序,以便可以使用下一个函数对由1到100的随机数填充的动态数组进行冒泡排序:
气泡排序功能
交换功能(用于气泡排序)
填充数组
和主要功能。
我有这段代码,但是不知道为什么冒泡排序功能不能正常工作,请帮帮我。
这是我的代码:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define TAM 100
void fill(int vector[]){
    int i;
    srand (time(NULL));
    for(i=0; i<=TAM; i++){
        vector[i]= rand()%100+1;
    }
}

void swap(int *a, int *b){
   int temp = *a;
   *a = *b;
   *b = temp;
   }

void bubble (int vector[], int n){
    int c,d,t;

  for (c=0; c<n-1; c++){
    for (d=0 ;d<n-c-1; d++){
      if (vector[d] > vector[d+1]) {
        swap(&vector[d+1], &vector[d+1]);
        /* Swapping */
        /*t=vector[d];
        vector[d]=vector[d+1];
        vector[d+1]=t;*/
      }
    }}}

/*void print (){
    }*/

 int main(void){
    //int vector[];
    int *vector;
    vector = (int*)malloc(sizeof(int)*TAM);
    if (vector==NULL){
perror("Problemas reservando memoria");
exit (1);
}
fill(vector);
bubble(vector, 100);
printf("%i", vector);


free (vector);
 return 0;
    }

最佳答案

冒泡排序函数不需要引用任何子函数

这是C语言中的典型冒泡排序

注意:声明array[]cdswapn的数据的特定特征

for (c = 0 ; c < n - 1; c++)
{
    for (d = 0 ; d < n - c - 1; d++)
    {
        if (array[d] > array[d+1]) /* For decreasing order use < */
        {
            swap       = array[d];
            array[d]   = array[d+1];
            array[d+1] = swap;
        }
    }
}


各种字符串需要使用strcpy()strcmp(),但实际上是相同的算法

07-26 07:02