读书人

排序输入数据不能超过四个

发布时间: 2013-07-08 14:13:00 作者: rapoo

排序,输入数据不能超过4个


#include <stdio.h>
void two_bubble_sort(int *,int n);

void main()
{
int array[] = {0};
int i,n = 0;
printf(" **How many numbers do you want to input**\n");
scanf("%d",&n);
for(i = 0; i < n; i++)
{
printf("Input the NO.%d number: ",i + 1);
scanf("%d",&array[i]);
}

printf(" **The array before being sorted is** \narray = { ");
for(i = 0; i < n; i++){
printf("%d ",array[i]);
}

two_bubble_sort(array,n);

printf("}\n **The array after being sorted is** \narray = { ");
for(i = 0; i < n; i++){
printf("%d ",array[i]);
}
printf("}\n");
}

void two_bubble_sort(int *array, int n)
{
int boundmin = 0;
int boundmax = n - 1; // i + 1 <= n - 1
int min,max,i;
int temp = 0;
while(boundmin < boundmax){
max = 0;
min = 0;
for(i = boundmin; i < boundmax; i++){
if(array[i] > array[i+1]){
temp = array[i];
array[i] = array[i+1];
array[i+1] = temp;
max = i;
}
}

boundmax = max;

for(i = boundmax - 1; i > boundmin; i--){
if(array[i] < array[i+1]){
temp = array[i];
array[i] = array[i+1];
array[i+1] = temp;
min = i;
}
}

boundmin = min;
}
}

[解决办法]
int array[] = {0};
array数组的大小仅仅是1,放2个以上的数据必定出错
[解决办法]
int array[255] = {};

改成这样,定义一个足够大的。或者用malloc()函数分配内存。
[解决办法]

#include <stdio.h>
void two_bubble_sort(int *,int n);

void main()
{
//int array[] = {0};
int i,n = 0;
printf(" **How many numbers do you want to input**\n");
scanf("%d",&n);
int *array = new int[n];//你的array的大小只有1。。会越界。。改为这样根据n动态new数组吧。。
for(i = 0; i < n; i++)
{
printf("Input the NO.%d number: ",i + 1);
scanf("%d",&array[i]);
}

printf(" **The array before being sorted is** \narray = { ");
for(i = 0; i < n; i++){
printf("%d ",array[i]);


}

two_bubble_sort(array,n);

printf("}\n **The array after being sorted is** \narray = { ");
for(i = 0; i < n; i++){
printf("%d ",array[i]);
}
printf("}\n");
delete [] array;
}

void two_bubble_sort(int *array, int n)
{
int boundmin = 0;
int boundmax = n - 1; // i + 1 <= n - 1
int min,max,i;
int temp = 0;
while(boundmin < boundmax){
max = 0;
min = 0;
for(i = boundmin; i < boundmax; i++){
if(array[i] > array[i+1]){
temp = array[i];
array[i] = array[i+1];
array[i+1] = temp;
max = i;
}
}

boundmax = max;

for(i = boundmax - 1; i > boundmin; i--){
if(array[i] < array[i+1]){
temp = array[i];
array[i] = array[i+1];
array[i+1] = temp;
min = i;
}
}

boundmin = min;
}
}


[解决办法]
引用:
Quote: 引用:

int array[] = {0};
array数组的大小仅仅是1,放2个以上的数据必定出错

对哦,忘记给数组大小了!


真幸运,出错了

读书人网 >C语言

热点推荐