使用函数对冒泡排序动态数组

时间:2019-02-26 03:18:57

标签: c arrays function sorting dynamic

我需要一个程序,因此我可以使用以下功能对动态数组进行冒泡排序,该数组填充从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;
    }

1 个答案:

答案 0 :(得分: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(),但实际上是相同的算法