会员控制台 会员登陆 会员注册 最后更新 高级搜索 会员投稿 退出登陆
设为首页
收藏本站
留言给我
  首页 | 操作系统类 | 程序设计类 | 数据库类 | 应用服务类 | 网络及硬件类 | 其他技术 | GBunix论坛
操作系统类
程序设计类
数据库类
应用服务类
网络及硬件类
其他技术
Unix中文 / 程序设计类 / C/C++ / 关于数组的插入与删除以及排序
关于数组的插入与删除以及排序
2006-07-15          点击:
关于数组的插入与删除以及排序

数组的插入:

#include <stdio.h>
#define SIZE 10
int main()
{
  int a[SIZE]={10,12,14,16,18,20,13,200,134,59}; /* 初始化数组 */
  int b[SIZE+1]={0},i,j,x,v; /* b数组为插入后的数组,新插入了一个元素,所以要在原数组的基础上加1 */

  printf("Please input insert addr:");
  scanf("%d",&x); /* 插入值的位置 */

  printf("Please input insert value:");
  scanf("%d",&v); /* 插入值 */

  for (i=0;i<=SIZE-1;i++) {
    if (i==x) { /* 循环数组a,当数组a元素值的位置与插入值的位置相等时 */
      b[i]=v; /* 把插入值赋给数组与数组a元素值相等的位置i */
      b[i+1]=a[i]; /* 把原来数组a中i位置的值赋下一个位置 */
      }
    if (i>x) b[i+1]=a[i]; /* 当循环中的i大于插入值的位置x时,以后每一个元素所放的位置向后退一格 */
    if (i<x) b[i]=a[i]; /* 当循环中的i小于插入值的位置x时,每一个元素所放的位置不变 */
    }

  printf("This array is:n");
  for (j=0;j<=SIZE;j++)
  printf("%5d",b[j]); /* 打印数组 */

  printf("n");
  return 0;
  }

数组的删除:

#include <stdio.h>
#define SIZE 10

int main()
{
  int a[SIZE]={10,12,14,16,18,20,13,200,134,59};
  int b[SIZE-1]={0},i,j,x,v;

  printf("Please input insert addr:");
  scanf("%d",&x);

  for (i=0;i<=SIZE-1;i++) {
    if (i==x) b[i-1]=a[i];
    if (i>x) b[i-1]=a[i];
    if (i<x) b[i]=a[i];
    }

  printf("This array is:n");
  for (j=0;j<=SIZE-2;j++)
  printf("%5d",b[j]);

  printf("n");
  return 0;
  }

  数组的插入跟数组删除大体上差不多,当插入元素后,插入点后面的每一个元素向后移一个位置,而删除是向前移一个位置。

数组的排序(泡沫排序法):

/* 本程序把数组的值按升排列 */
#include <stdio.h>
#define SIZE 15

main()
{
  int a[SIZE]={900,2,3,58,34,76,32,43,56,70,35,234,532,543,2500};
  int i,pass,hold,j=0,k=0;

  printf("Data items in oraginal ordern");

  for (i=0;i<=SIZE-1;i++) /* 打印排序前的数组 */
  printf("%6d",a[i]);

  for (pass=1;pass<=SIZE-1;pass++) { /* 比较的趟数 */
    for (i=0;i<=SIZE-(pass+1);i++) { /* 比较一趟,注意这里的条件是SIZE-(pass+1) */
      if (a[i]>a[i+1]) {
        hold=a[i];
        a[i]=a[i+1];
        a[i+1]=hold;
        }
      }
    }

  printf("nData items in ascending ordern");

  for (i=0;i<=SIZE-1;i++) /* 打印排序后的数组 */
  printf("%6d",a[i]);

  printf("n");

  return 0;

  }

了解更多详情,参与讨论,请进入GBUNIX论坛

http://www.gbunix.com/bbs/index.php
责任编辑: trotter

相关文章
让RH9用reiserFS文件系统 - 01-14 11:06 am - 点击: 103
解析Linux新技术对象存储文件系统 - 01-10 12:49 pm - 点击: 128
Linux环境下使用GFS文件系统 - 01-05 10:05 pm - 点击: 135
Linux环境下使用JFS文件系统 - 01-05 10:00 pm - 点击: 99
Linux环境下使用XFS文件系统 - 01-05 09:46 pm - 点击: 104
Linux环境中使用Ext3文件系统 - 01-05 09:37 pm - 点击: 115
Linux 文件系统的桌面应用 - 12-29 09:09 pm - 点击: 110
Linux下加挂文件系统 - 11-29 08:53 pm - 点击: 197
实现从ext2到ext3文件系统转换 - 07-26 12:53 pm - 点击: 194
Ext2和Ext3文件系统 - 07-17 07:05 pm - 点击: 154

发表评论 查看评论 加入收藏 Email给朋友 打印本文
给该文章评分
1 2 3 4 5 6 7 8 9 10
平均得分 0, 共 0 人评分
1 2 3 4 5 6 7 8 9 10
发表评论
标题:
内容:
声明:本站资讯均来自互联网,所有文章版权归原作者和出版者所有,如涉及版权问题,请来信告知!
Copyright © 2002-2004 GBunix.com. All rights reserved.