对数组的简单操作和排序 第4次讨论主题(for WJ)

(课堂已布置的作业)将整型数组num[N]定义为外部的、用六个函数:

  1. void main(void);
  2. 冒泡函数void bubble_sort(void);
  3. 选择排序一函数void select_sort1(void);
  4. 选择排序二函数void select_sort2(void);
  5. 随机数初始化数组函数void init(void);//随机种子、每个数小于55
  6. 打印输出函数void prt(void);//每行打12个

处理num[N]数组排降序

7.编写另一函数  ??? del(int);从排好降序的num[N]整型数组中删除从首至尾第一次出现的某数(在main中从键盘输入),若删除成功、余下数仍连续保持降序、置首数为55

8.初始化外部数组num[N]、编写另一函数

void odd_even(void)实现将数组元素奇数排列在前、偶数排列在后。(不允许定义其它数组辅助操作)

函数的构建:

     1、初始化数组num

void Init()//初始化num,随机产生0—55的数据
{

    int i;    

    srand((unsigned)time(NULL));

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

    num[i]=rand()%56;//随机数在0—55中产生

    }

}

随机产生数组num

2、冒泡排序

void Bublle_Sort()//冒泡排序(降序)
{

    int i,j,temp;

    for(i=0;i<MAXN-1;i++)
    {

        for(j=0;j<MAXN-i-1;j++)
        {

            if(num[j]<num[j+1])
            {

                temp=num[j];
                num[j]=num[j+1];
                num[j+1]=temp;

            }

        }

    }

}

Bublle_Sort()

3、选择排序1:

void select_sort1()//选择排序(降序)
{

    int i,j,k,temp;

    for(i=0;i<MAXN-1;i++)
    {

        k=i;

        for(j=i+1;j<MAXN;j++)
        {

            if(num[j]>num[k]) k=j;//选择出第i大的数,与num[i]交换位置

        }

        if(k!=i)
        {

            temp=num[k];
            num[k]=num[i];
            num[i]=temp;

        }

    }

}

select_sort1()

4、选择排序2

void select_sort2()//选择排序2(降序)
{

    int i,j,k,temp;

    for(i=0;i<MAXN-1;i++)
    {

        k=i;

        for(j=i+1;j<MAXN;j++)
        {

            if(num[j]>num[k]) {

            temp=num[k];
            num[k]=num[j];
            num[j]=temp;

            }

        }

    }

}

select_sort2()

5、输出排序

void prt()//每行打12个,处理num[N]数组排降序!
{

    int i;

    select_sort2();

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

        if(i%12==11||i==MAXN-1) printf("%2d\n",num[i]);
        else printf("%2d ",num[i]);
    }

}

prt()

6、把数组第i个数置为55

void del(int x)
{

    int i;

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

        if(x==num[i])
        {

            num[i]=55;

            return ;
        }

    }

    printf("删除失败!\n");

}

del(int x)

7、奇数在前,偶数在后

void odd_even()//实现将数组元素奇数排列在前、偶数排列在后。
{

    int i,j,temp;

    for(i=0;i<MAXN-1;i++)//类似选择排序
    {

        if(num[i]%2) continue;

        for(j=i+1;j<MAXN;j++)
        {

            if(num[j]%2)
            {

                temp=num[i];
                num[i]=num[j];
                num[j]=temp;

                continue;
            }

        }

        break;

    }

}

odd_even()

8、完整代码:

#include<stdio.h>
#include<stdlib.h>//随机函数的头文件(rand())
#include<time.h>//时间函数的头文件(srand((unsigned)time(NULL)))辅助产生随机数

#define MAXN 100

int num[MAXN];

void Init()//初始化num,随机产生0—55的数据
{

    int i;    

    srand((unsigned)time(NULL));

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

    num[i]=rand()%56;//随机数在0—55中产生

    }

}

void Bublle_Sort()//冒泡排序(降序)
{

    int i,j,temp;

    for(i=0;i<MAXN-1;i++)
    {

        for(j=0;j<MAXN-i-1;j++)
        {

            if(num[j]<num[j+1])
            {

                temp=num[j];
                num[j]=num[j+1];
                num[j+1]=temp;

            }

        }

    }

}

void select_sort1()//选择排序2(降序)
{

    int i,j,k,temp;

    for(i=0;i<MAXN-1;i++)
    {

        k=i;

        for(j=i+1;j<MAXN;j++)
        {

            if(num[j]>num[k]) k=j;//选择出第i大的数,与num[i]交换位置

        }

        if(k!=i)
        {

            temp=num[k];
            num[k]=num[i];
            num[i]=temp;

        }

    }

}

void select_sort2()//选择排序2(降序)
{

    int i,j,k,temp;

    for(i=0;i<MAXN-1;i++)
    {

        k=i;

        for(j=i+1;j<MAXN;j++)
        {

            if(num[j]>num[k]) {

            temp=num[k];
            num[k]=num[j];
            num[j]=temp;

            }

        }

    }

}

void print()
{

    int i;
    for(i=0;i<MAXN;i++)
    {

        if(i%12==11||i==MAXN-1) printf("%2d\n",num[i]);
        else printf("%2d ",num[i]);
    }
}

void prt()//每行打12个,处理num[N]数组排降序!
{
    select_sort2();

    print();

}

void del(int x)
{

    int i;

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

        if(x==num[i])
        {

            num[i]=55;

            return ;
        }

    }

    printf("删除失败!\n");

}

void odd_even()//实现将数组元素奇数排列在前、偶数排列在后。
{

    int i,j,temp;

    for(i=0;i<MAXN-1;i++)//类似选择排序
    {

        if(num[i]%2) continue;

        for(j=i+1;j<MAXN;j++)
        {

            if(num[j]%2)
            {

                temp=num[i];
                num[i]=num[j];
                num[j]=temp;

                continue;
            }

        }

        break;

    }

}

void main()
{

    int i;

    Init();
    printf("初始化num数组:\n");
    print();

    printf("\nprt()函数的效果\n");
    prt();

    Init();
    select_sort1();
    printf("\n选择排序1:\n");
    print();

    Init();
    select_sort2();
    printf("\n选择排序2:\n");
    print();

    Init();
    Bublle_Sort();
    printf("\n冒泡排序:\n");
    print();

    del(31);
    printf("\n删除第一个31并置为55:\n");
    print();

    Init();
    odd_even();
    printf("\n将奇数置于头,偶数置于尾:\n");
    print();

}

实现效果:

时间: 2024-10-19 23:35:20

对数组的简单操作和排序 第4次讨论主题(for WJ)的相关文章

php对二维数组进行相关操作(排序、转换、去空白等)

php对二维数组进行相关操作(排序.转换.去空白等) 投稿:lijiao 字体:[增加 减小] 类型:转载 时间:2015-11-04 这篇文章主要介绍了php对二维数组进行相关操作,包括php对二维数组排序.转换.去空白,以及去重复值等,感兴趣的小伙伴们可以参考一下 技巧提示: ? 1 2 3 4 5 6 7 8 9 array_keys($array) //返回所有键名   array_values($array) //返回所有键值    $result=array_reverse($inp

数组的简单操作

数组在数据结构中的作用是非常重要的,所以要学好数据结构与算法,首先就要对数组有必要的了解和熟悉.实例采用面向对象的思想,对数组进行操作. 声明long型的数组,元素内长度为element. private long[] arr;private int element; 1 //无参构造函数 2 public MyArray(){ 3 arr = new long[50]; 4 } 5 6 //有参构造函数 7 public MyArray(int maxSize){ 8 arr = new lo

java中对于二位数组的简单操作,进而可以递推复杂操作

1.程序 2.结果 3.内循环的次数 arr[x].length

关于数组简单操作

数组对象(NSArray) 1 创建及初始化 1.1 array:方法:创建数组 1.2 arrayWithArray:方法:通过一个数组创建另一个数组 1.3 arrayWithContentsOfFile:方法:创建数组将内容设置为指定文件内容 1.4 arrayWithContentsOfURL:方法:创建数组将内容设置为url指定内容 1.5 arrayWithObject:方法:创建具有一个元素的数组 1.6 arrayWithObjects:方法:创建具有多个元素的数组 1.7 in

JS 数组常见操作汇总,数组去重、降维、排序、多数组合并实现思路整理

壹 ? 引 JavaScript开发中数组加工极为常见,其次在面试中被问及的概率也特别高,一直想整理一篇关于数组常见操作的文章,本文也算了却心愿了. 说在前面,文中的实现并非最佳,实现虽然有很多种,但我觉得大家至少应该掌握一种,这样在面试能解决大部分数组问题.在了解实现思路后,日常开发中结合实际场景优化实现,提升性能也是后期该考虑的. 本文主要围绕数组去重.数组排序.数组降维.数组合并.数组过滤.数组求差集,并集,交集,数组是否包含某项等知识点展开,附带部分知识拓展,在看实现代码前也建议大家先自

Java数据结构和算法之数组与简单排序

一.数组于简单排序 数组 数组(array)是相同类型变量的集合,可以使用共同的名字引用它.数组可被定义为任何类型,可以是一维或多维.数组中的一个特别要素是通过下标来访问它.数组提供了一种将有联系的信息分组的便利方法. 一维数组 一维数组(one‐dimensional array )实质上是相同类型变量列表.要创建一个数组,你必须首先定义数组变量所需的类型.通用的一维数组的声明格式是: type var‐name[ ]; 获得一个数组需要2步: 第一步,你必须定义变量所需的类型. 第二步,你必

Python简单操作笔记

Python 类型转换 str(),repr()|format() : 将非字符类型转成子串 int() : 转为整形 float() : 转为浮点型 list(s) : 将字串s转成列表 tuple(s) : 将字串s转成元组 set(s) : 将字串s转成集合 frozenset(s) : 将字串s转成不可变集合 dict(s) : 创建字典 其d必须是(key,value)的元组序列; chr(x) : 将整形转成字符 ord(x) : 将字符转成整形 hex(x) : 将整形转换成16进

数组之 -- 数组元素的比较、排序

前言: 当我们在使用Java,应该"优选容器而不是数组".只有在证明性能成为问题,并且切换到数组对性能提高有所帮助时,你才应该使用数组. 排序: 排序必须根据对象的实际类型执行比较操作.一种自然的解决方案是为每种不同的类型各编写一个不同的排序方法,但是这样的代码难以被新的类型所复用. 程序设计的基本目标是:"将保持不变的事物与会发生改变的事物相分离",而这里,不变的是通用的排序算法,变化的是各种对象相互比较的方式.因此,不是将进行比较的代码编写成不同的子程序,而是使

Javascript Jquery 中的数组定义与操作

Javascript Jquery 中的数组定义与操作 (2012-02-15 10:28:00) 转载▼ 标签: 杂谈   1.认识数组 数组就是某类数据的集合,数据类型可以是整型.字符串.甚至是对象Javascript不支持多维数组,但是因为数组里面可以包含对象(数组也是一个对象),所以数组可以通过相互嵌套实现类似多维数组的功能 1.1 定义数组 声明有10个元素的数组 var a = new Array(10); 此时为a已经开辟了内存空间,包含10个元素,用数组名称加 [下标] 来调用,