我需要一个程序,因此我可以使用以下功能对动态数组进行冒泡排序,该数组填充从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;
}
答案 0 :(得分:0)
冒泡排序函数不需要引用任何子函数
这是C语言中典型的冒泡排序
注意:声明array[]
,c
,d
,swap
和n
来说明数据的特定特征
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()
,但实际上是相同的算法