c语言,自己编了个直接插入排序,可是却输出不了正确的结果,找不到哪里错了,求大神指点

问题描述

c语言,自己编了个直接插入排序,可是却输出不了正确的结果,找不到哪里错了,求大神指点

#include
#include
void Straightinsertionsort(int a[])
{
int i,j,k;
int b[10]={0};
b[0]=a[0];
for(i=1;i
{
for(j=i-2;j>=0;j--)
{
if(a[i]>b[j])
{
for(k=i-2;k>j;k--)
{
b[k+1]=b[k];
}
b[j+1]=a[i];
}
}
}
for(i=0;i<10;i++)
{
printf("%d",b[i]);
}
}
int main()
{
int a[10]={0};
int i;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
Straightinsertionsort(a);
return 0;

}

解决方案

 for(i = 0; i < len; i ++){
            tmp = a[i];
            for(j = i - 1; j >= 0; j --){
                if(tmp < a[j]){
                  //小于a[j],则a[j]向后移动
                    a[j + 1] = a[j];
                }else{
                  //若tmp>=a[j],则说明找到a[i]的插入位置,跳出循环
                    break;
                }
            }
            a[j + 1] = tmp;//j之后的位置就是a[i]在有序中的位置
        }

解决方案二:

lz你的代码不完整,第一个for循环的i这里,而且i从1开始,下面的j=i-2不就有问题了么

时间: 2024-08-18 05:15:56

c语言,自己编了个直接插入排序,可是却输出不了正确的结果,找不到哪里错了,求大神指点的相关文章

struct-自己编的c语言建立二叉树的代码,运行时出错了,自己找不到错误,求大神帮忙,指点,急.

问题描述 自己编的c语言建立二叉树的代码,运行时出错了,自己找不到错误,求大神帮忙,指点,急. 自己编的c语言建立二叉树的代码,运行时出错了,自己找不到错误,求大神帮忙,指点,急. #include #include typedef struct tnode Tnode; struct tnode { Tnode *left; Tnode *right; int data; }; Tnode *new_tnode(int data) { Tnode *new = malloc(sizeof(Tn

printf-c语言新手 求大神指点

问题描述 c语言新手 求大神指点 我编的公里数转换成英里数,有错误,但自己看不出来,求指点 #include #define T 1.60934 main() { float K,E; printf("Please input one kilometres:n"); scanf("%f",K); E=K/T; printf("%fn"); } 解决方案 #include #define T 1.60934 main() { float K,E;

c语言-C++代码改成C语言代码,没学过C++好多看不懂啊(泪奔······)求大神指点,我用的VC6.0

问题描述 C++代码改成C语言代码,没学过C++好多看不懂啊(泪奔······)求大神指点,我用的VC6.0 代码如下, #include "winsock2.h" #include "Winsnmp.h" #include 这里是string以下都要用 < 和 > 括起来(不知为何不显示=,=) #include vector #include algorithm #include iostream #pragma comment(lib,"

C语言,寻找二维数组鞍点,代码个人测试正确, 但是wrong answer, 求大神指点

问题描述 C语言,寻找二维数组鞍点,代码个人测试正确, 但是wrong answer, 求大神指点 Description 给定一个海拔平面图,相当于一个二维数组,数组的每个元素表示一个点的海拔高度.请判断该图中是否存在鞍点,如果存在,则输出该鞍点的位置,即行.列坐标. 本题规定鞍点的定义为:该点的值在它所在的那行中是唯一最大的,且该点的值在它所在的那列中是唯一最小的. Input 输入有多个测试用例,如果把每个测试用例看作一个"块",那么,在一个"块"中: 第一行

c语言-关于C语言链表的一些问题,代码怎么都运行不成功跪求大神指点

问题描述 关于C语言链表的一些问题,代码怎么都运行不成功跪求大神指点 下面代码主要实现链表的创建,插入,删除,并且能将两个年龄递增链表进行合并成递减链表 然而在插入和删除操作中gets函数无法起作用,strcmp函数也出现位置冲突报错..功力不足实在解决不了..跪求大神解答..(感觉自己写的东西除了上面两个错误应该还有,但是因为位置冲突问题就只能编译到那个地方无法进行下去..我肉眼实在找不出来.. #include<stdio.h> #include<stdlib.h> #incl

c语言-菜鸟OJ, C语言数简单列求和, 感觉测试没错, 但是wrong answer, 求大神指点

问题描述 菜鸟OJ, C语言数简单列求和, 感觉测试没错, 但是wrong answer, 求大神指点 Description 有一个分数序列:2/1,3/2,5/3,8/5,13/8,21/13... 求出这个数列的前n项之和. Input 多测试用例,每个测试用例一行,每行是一个正整数n Output 为每个测试用例单独输出一行:该数列的前n项之和.结果均保留小数点后10位. Sample Input 1 2 3 Sample Output 2.0000000000 3.5000000000

c语言-C语言入门问题求大神指点

问题描述 C语言入门问题求大神指点 #include #define TABINC 8 //tab increment size //replace strings of blanks with tabs and blanksint main(void){ int c nb nt pos; nb = 0; //number of blanksnt = 0; //number of tabsfor (pos = 1; (c = getchar()) != EOF; pos++){ if (c ==

指针-新手OJ,C语言 去除字符串中的所有空格模块, 不知为何出错,求大神指点

问题描述 新手OJ,C语言 去除字符串中的所有空格模块, 不知为何出错,求大神指点 作用: 把数组a中的所有空格去除, 并把后面的往前移动.例如: a b c变成:abc 字符指针 *p *q 数组a[] for(p=&a[0]; p!=''; p++)if(*p==' ')for(q=p; *(q+1)!=''; q++)*q=(q+1); //去除a字符串中的空格 但总是不对, 求大神指点. 解决方案 #include<stdio.h>int main(){ char str[20

c语言编程-小白一枚!求大神指点如何学习C

问题描述 小白一枚!求大神指点如何学习C 如题,我之前学习过java现在也在从事这方面的工作,想学习c确不知道从哪里下手 解决方案 我给一个过来人的答案吧 虽说不适什么大牛,但是也有一些小小的体会! 上了大学才知道有编程!开始就接触c语言,但就是不知道c能干啥!然后就是玩玩单片机,本科偏硬件专业,所以单片机和c搞了搞!最后也没干出来啥明堂!后来学了数据结构,卧槽-一下子感觉c语言脑洞大开!体会真的不一样!再后来看Java,搞安卓开发到现在!越来越体会到c是必须要学的!我支持你学c!!!首先把语法