当前位置:首页 » 编程语言 » c语言排序不成功
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言排序不成功

发布时间: 2023-02-09 04:41:20

A. c语言程序排序没成功,它跳过了排序那步,只执行了输入输出

你看下你自己i的值,你这样写的话i的值在排序前就是7了,不满足排序for循环的条件,自然跳过了
稍微改了下就可以了,你看看吧
#include <stdio.h>#include <stdlib.h>/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
int a[8],i,j,k,t;
for(i=0;i<8;i++)
scanf("%d",&a[i]);
for(i=0;i<7;i++){
for(j=i+1;j<8;j++)
{
if(a[i]>a[j]){
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
for(i=0;i<8;i++)
printf("%d\t",a[i]);
return 0;
}

B. c语言 为什么我的这个排序不能实现呢

逻辑问题。
if(p1==p2)
{
t->next=p1;
head=t;
}
这里出现了断层。如果第一次 while(t->hode_date<p1->hode_date&&p1!=NULL)就不成立;
就会出现 p1=p2=head的情况,而且p1->next也就是head->next=NULL;你这里就出现断层了,一个链表一旦断链,又没有存储断链地址,你就链不上了。

C. 我的C语言排序代码无法实现排序算法

在Entropy(message);

之前加一句:
buttle(message, strlen(message));
另外将float log(float);这句去掉,否则编译由错误

D. C语言选择法排序错误

你少加了一对大括号,就是在第二个for语句应该包括两个if语句,
if(array[j]<array[i])
k=j;
if(k!=i)
{t=array[i];array[i]=array[k];array[k]=t;}
这个外面再加一对{}

E. c语言为什么我这个程序不能进行排序

#include<stdio.h>
int main()
{
int i,j,n;
int a[100];
int m;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n-1;i++)
{
for(j=0;j<n-(i+1);j++)
{
if(a[j]<a[j+1])
{
m=a[j];
a[j]=a[j+1];
a[j+1]=m;
}
}

}
for(i=0;i<n;i++)
printf("%4d",a[i]);
return 0;
}
冒泡排序j也是从0开始,你有个for后面打了分号,打印数据的循环你放在排序循环里面。
上面是修改好的代码。

F. C语言数组排序出错如何解决

一、merge(a[10], 5, 5); 改成:merge(a, 5, 5);

二、看不懂你的void merge(int A[10], int m, int n)函数!

G. C语言中对数组排序出现错误怎么解决

可以使用下面五种方法解决:
(1)插入排序函数
void insertion_sort(int[],int);/*插入排序*/
(2)希尔排序函数
void shell_sort(int[],int);/*希尔排序*/
(3)冒泡排序函数
void bubble_sort(int[],int);/*冒泡排序*/
(4)选择排序函数
void select_sort(int[],int);/*选择排序*/
(5)将数据调整为堆的函数
void adjust(int,int);/*将数据调整为堆树*/

H. C语言直接选择排序运行失败

你的选择排序的函数传参,传错了,select_sort(a[8],8);应该是select_sort(a,8);

a[8]在C语言中是数组a的第9个元素,而a数组只有8个元素,所以你传了一个越界的数组元素,因此出运行错误

a在C语言中是数组a的第1个元素的指针,所以可以在函数中访问到整个a数组

还有函数的定义那一句voidselect_sort();应该改成voidselect_sort(inta[],intn);

还有需要把if(min!=i)语句移到for-j循环外面,for-i循环里面

还有把printf("%d",a[i]); 改成printf("%d ",a[i]);每输出一个元素加一个空格

完整的C语言程序如下

#include<stdio.h>

voidselect_sort(inta[],intn);

intmain(){

inti;inta[8];

printf("请输入8个整数,将为您从小到大排序。 ");

for(i=0;i<8;i++){

scanf("%d",&a[i]);

}

select_sort(a,8);

for(i=0;i<8;i++){

printf("%d",a[i]);

}

return0;

}

voidselect_sort(inta[],intn){

inti,j,t,min;

for(i=0;i<n-1;i++){//n-1次排序(移动)

min=i;

for(j=i+1;j<n;j++){//n-i次比较

if(a[min]>a[j])min=j;

}

if(min!=i){//最小值不在i处的情况

t=a[min];

a[min]=a[i];

a[i]=t;

}

}

}

运行结果
请输入8个整数,将为您从小到大排序。
871163543332618
816182633354371

I. C语言 冒泡排序我想用下沉的方法排序,但总是不成功,求大神改错

{k=*(a+j);
*(a+j+1)=*(a+j);
*(a+j)=k;}
您这一段逻辑有问题,K = *(a+j); *(a+j+1) =*(a+j); too ,*(a+j)=k;后,
你原来的*(a+j+1)的值去哪了?
貌似应该是K=*(a+j+1);
*(a+j+1)=*(a+j);
*(a+j)=k;