| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 496 人关注过本帖
标题:用插入排序法,这个程序为什么不能实现排序?
只看楼主 加入收藏
青山细雨
Rank: 2
等 级:论坛游民
帖 子:25
专家分:16
注 册:2011-10-18
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
用插入排序法,这个程序为什么不能实现排序?
#include <stdio.h>
void main()
{
    int a[10]={6,5,3,8,2,1,7,4,9,0};
    int i,j,num;
    for (i=1;i<11;i++)
    {
        num=a[i];
        j=i-1;
        if (j>=0&&num<a[j])
        {
            a[j+1]=a[j];
            j--;
        }
        a[j+1]=num;
    }
    for (i=0;i<10;i++)
        printf("%d",a[i]);
}
不能得到有序的数组
搜索更多相关主题的帖子: include 
2011-10-21 21:02
c602004164
Rank: 2
等 级:论坛游民
帖 子:5
专家分:18
注 册:2011-9-29
收藏
得分:7 
你的程序循环了10次,实现的功能是相邻元素比较大小,如果前一个比后一个大,则互换这两个元素的位置,所以不对咯。
2011-10-21 21:22
hhdong123
Rank: 2
等 级:论坛游民
帖 子:8
专家分:25
注 册:2011-10-21
收藏
得分:7 
  楼主对概念了解还是不太清楚,下面就是算法步骤
 1. 从第一个元素开始,该元素可以认为已经被排序  
 2. 取出下一个元素,在已经排序的元素序列中从后向前扫描  
 3. 如果该元素(已排序)大于新元素,将该元素移到下一位置  
 4. 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置  
 5. 将新元素插入到下一位置中   
  6. 重复步骤2
我之前也写了代码 你可以参考一下,最重要的是自己想。
/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
    int a[5]={12,2,56,4,1},i,j,k,t;
    for (i=1;i<=4;i++)
    {
        for (j=0;j<=i-1;j++)
        {
        if(a[j]>a[i])
        {
            t = a[i];
        for (k=i-1;k>=j;k--)
           a[k+1]=a[k];
        a[j]=t;
        break;
        }
        }
    }
    for(i=0;i<=4;i++)
     printf("%d ",a[i]);
   
}
2011-10-21 21:24
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:7 
想插入排序 先用链表把数据保存起来  然后既省时又省力

                                         
===========深入<----------------->浅出============
2011-10-21 21:32
青山细雨
Rank: 2
等 级:论坛游民
帖 子:25
专家分:16
注 册:2011-10-18
收藏
得分:0 
回复 3楼 hhdong123
谢谢,
2011-10-21 21:52
快速回复:用插入排序法,这个程序为什么不能实现排序?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011764 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved