itgle.com

编程实现使用冒泡排序法对具有12个数组元素的一维整型数组array[12] = {96,35,12,58,78,90,587,21,0,-65,106,52}按照由大到小的排序进行排序,输出排序前后的数组,并查找90是否在该数组中,若再该数组中,输出90在该数组中的位置,否则输出“90不在数组array中”,要求:使用指针在函数中实现排序和查找的功能,在主函数中调用这两个函数。

题目

编程实现使用冒泡排序法对具有12个数组元素的一维整型数组array[12] = {96,35,12,58,78,90,587,21,0,-65,106,52}按照由大到小的排序进行排序,输出排序前后的数组,并查找90是否在该数组中,若再该数组中,输出90在该数组中的位置,否则输出“90不在数组array中”,要求:使用指针在函数中实现排序和查找的功能,在主函数中调用这两个函数。


相似考题
更多“编程实现使用冒泡排序法对具有12个数组元素的一维整型数组array[12] = {96,35,12,58,78,90,587,21,0,-65,106,52}按照由大到小的排序进行排序,输出排序前后的数组,并查找90是否在该数组中,若再该数组中,输出90在该数组中的位置,否则输出“90不在数组array中”,要求:使用指针在函数中实现排序和查找的功能,在主函数中调用这两个函数。”相关问题
  • 第1题:

    将数组名作为函数实参,表示将数组首地址传递给函数,在函数中可以通过该首地址操作数组中的元素并更改元素的值。()

    此题为判断题(对,错)。


    正确答案:正确

  • 第2题:

    阅读以下算法说明,根据要求回答问题1~问题3。

    [说明]

    快速排序是一种典型的分治算法。采用快速排序对数组A[p..r]排序的3个步骤如下。

    1.分解:选择一个枢轴(pivot)元素划分数组。将数组A[p..r]划分为两个子数组(可能为空)A[p..q-1]和A[q+1..r],使得A[q]大于等于A[p..q-1]中的每个元素,小于A[q+1..r]中的每个元素。q的值在划分过程中计算。

    2.递归求解:通过递归的调用快速排序,对子数组A[p..q-1]和A[q+1..r]分别排序。

    3.合并:快速排序在原地排序,故无需合并操作。

    下面是快速排序的伪代码,请将空缺处(1)~(3)的内容填写完整。伪代码中的主要变量说明如下。

    A:待排序数组

    p,r:数组元素下标,从p到r

    q:划分的位置

    x:枢轴元素

    i:整型变量,用于描述数组下标。下标小于或等于i的元素的值,小于或等于枢轴元素的值

    j:循环控制变量,表示数组元素下标


    正确答案:这是一道考查快速排序算法伪代码的分析题。快速排序是对冒泡排序的一种改进其基本思想是:通过一趟排序将要排序的数据分割成独立的两部分其中一部分的所有数据都比另外一部分的所有数据都要小然后再按此方法对这两部分数据分别进行快速排序整个排序过程可以递归进行以此达到整个数据变成有序序列。快速排序最核心的处理是进行划分即PARTITION操作:根据枢轴元素的值把一个较大的数组分成两个较小的子数组一个子数组的所有元素的值小于等于枢轴元素的值一个子数组的所有元素的值大于枢轴元素的值而子数组内的元素不排序。划分时以最后一个元素为枢轴元素从左到右依次访问数组的每一个元素判断其与枢轴元素的大小关系并进行元素的交换如图2-30所示。 在[问题1]所给出的伪代码中当for循环结束后A[p..i]中的值应小于等于枢轴元素值x而A[i+1..r-1]中的值应大于枢轴元素值x。此时A[i+1]是第一个比A[r]大的元素因此A[r]与A[i+1]进行交换得到划分后的两个子数组。PARTITION操作返回枢轴元素的位置因此返回值为i+l。
    这是一道考查快速排序算法伪代码的分析题。快速排序是对冒泡排序的一种改进,其基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序最核心的处理是进行划分,即PARTITION操作:根据枢轴元素的值,把一个较大的数组分成两个较小的子数组,一个子数组的所有元素的值小于等于枢轴元素的值,一个子数组的所有元素的值大于枢轴元素的值,而子数组内的元素不排序。划分时,以最后一个元素为枢轴元素,从左到右依次访问数组的每一个元素,判断其与枢轴元素的大小关系,并进行元素的交换,如图2-30所示。 在[问题1]所给出的伪代码中,当for循环结束后,A[p..i]中的值应小于等于枢轴元素值x,而A[i+1..r-1]中的值应大于枢轴元素值x。此时A[i+1]是第一个比A[r]大的元素,因此A[r]与A[i+1]进行交换,得到划分后的两个子数组。PARTITION操作返回枢轴元素的位置,因此返回值为i+l。

  • 第3题:

    补充程序Ccon042.C,使程序中的sort()函数用冒泡法对数组a中的m个元素从大到小排序


    for(i=0;i</**/m-1/**/;i++)
    if/**/(a[j]<a[j+1])/**/
    a[j]=/**/a[j+1]/**/;

  • 第4题:

    有一组无序排列的整数数组如{1,5,7,9,2} 通过算法实现对该数组按从大到小的顺序进行排序,输出排序后的结果同时输入原始数组的数组索引下标,如输出排序结果为{9,7,5,2,1},输出原始数组索引下标为{3,2,1,4,0}。


    正确答案:
     

  • 第5题:

    已知数据文件IN1.DAT和IN2.DAT中分别存有100个两位十进制数,并且已调用读函数readDat把这两个文件中的数存入数组a和b中,请考生编制一个函数jsVal,实现的功能是依次对数组a和b中的数按条件重新组成一个新数并依次存入数组C中,再对数组C中的数按从小大的顺序进行排序,最后调用输出函数writeDat把结果C输出到文件out.dat中。组成新数的条件:如果数组a和b中相同下标位置的数必须符合一个是偶数,另一个是奇数,则数组a中的数按二进制数左移八位后再加上数组b对应位置上的数,把这样组成的新数依次存入数组C中。


    正确答案:
    【审题关键句】数组相同下标位置上的奇数和偶数,二进制数左移八位,对应数组元素相加,保存到新数组,从小到大排序。
    【解题思路】
    ①定义循环变量i、i和无符号整型变量v。
    ②在for循环语句中,循环变量i从0开始,依次递增直到其值等于MAX。在循环体中,用if语句判断如果a[i]是奇数且b[i]是偶数或者a[i]是偶数且b[i]是奇数,则把a[i]左移八位后与b[i]的和赋给c[cnt],同时cnt加1。
    ③在第一层for循环语句中,循环变量i从0开始,依次递增直到其值等于或大于cnt。在第二层for循环语句中,循环变量j从i十1开始,依次递增直到其值等于或大于cnt。在循环体中,用if,吾句判断如果c[i]大于c[j],则两者互换,实现数组C中元素从小到大的排序。
    【参考答案】

  • 第6题:

    String str = "svd9876fsb543fdg210";将字符串中所有偶数转为int[] 数组,再对数组冒泡排序,最后使用Arrays输出数组。


    答案:
    import java.lang.reflect.Array;
    import java.util.Arrays;
    public class Chap54e {
    public static void main(String[] args) {
    String str="svd9876fsb543fdg210";
    StringBuffer sf=new StringBuffer();
    int a,i,j;
    for(i=0;i
    {
    if(str.charAt(i)>='0'&&str.charAt(i)<='9')
    { a=Integer.valueOf(String.valueOf(str.charAt(i)));
    //或 a=Integer.parseInt(String.valueOf(str.charAt(i)));
    if(a%2==0)
    {sf.append(a);}
    }
    }
    int[] arr=new int[sf.length()];
    for(i=0;i
    {
    arr[i]=Integer.valueOf(String.valueOf(sf.charAt(i)));
    }
    for(int k:arr)
    System.out.println(k);
    System.out.println("");
    for(i=0;i
    for(j=0;j
    {
    int temp;
    if(arr[j]>arr[j+1])
    {
    temp=arr[j];
    arr[j]=arr[j+1];
    arr[j+1]=temp;// TODO Auto-generated method stub
    }
    }
    System.out.println(Arrays.toString(arr));
    }
    }
    【参考答案二】
    import java.util.Arrays;
    public class Chap54e {
    public static void main(String[] args) {
    // 1.String str = "svd9876fsb543fdg210";将字符串中所有偶数转为int[] 数组,
    // 再对数组冒泡排序,最后使用Arrays输出数组。
    String str = "svd9876fsb543fdg210";
    StringBuilder sb = new StringBuilder();
    // 1.遍历字符串,获取每个字符
    for (int i = 0; i < str.length(); i++) {
    char charAt = str.charAt(i);
    // 2.判断当前字符是否为数字,
    if (Character.isDigit(charAt)) {// 如果是数字
    // 3.再判断该字符是否为偶数如果是偶数
    // char--->String--->int
    int parseInt = Integer.parseInt(String.valueOf(charAt));
    if (parseInt % 2 == 0) {
    // 保存起来
    sb.append(parseInt);
    }
    }
    }
    System.out.println("sb:" + sb);
    // 4.根据保存偶数数字的个数来创建int[]
    int[] arr = new int[sb.length()];
    for (int i = 0; i < sb.length(); i++) {
    char charAt = sb.charAt(i);// 获取sb中下表为i的字符
    // 将该字符转为int类型
    int parseInt = Integer.parseInt(String.valueOf(charAt));
    // 5.将存储的数字赋值给int[]
    // 将该int类型的值赋值给数组下表为i的元素
    arr[i] = parseInt;
    }
    System.out.println(Arrays.toString(arr));
    // 6.冒泡
    maoPao(arr);
    // 7.输出
    System.out.println(Arrays.toString(arr));
    }
    /**
    * 对数组冒泡排序
    *
    * @param arr
    * 被排序的数组
    */
    public static void maoPao(int[] arr) {
    for (int i = 0; i < arr.length - 1; i++) {
    for (int j = 0; j < arr.length - 1 - i; j++) {
    if (arr[j] > arr[j + 1]) {
    int temp = arr[j];
    arr[j] = arr[j + 1];
    arr[j + 1] = temp;
    }
    }
    }
    }
    }

  • 第7题:

    在Array类中,可以对一维数组中的元素进行排序的方法是()。


    正确答案:Sort

  • 第8题:

    在Java中,数组排序的方法是()


    正确答案:java.util.Arrays.sort()

  • 第9题:

    以下PHP数组函数中,能取得数组键名的函数是()。

    • A、Array_keys
    • B、Array_values
    • C、Array_merge
    • D、Array_flip

    正确答案:A

  • 第10题:

    冒泡排序对一维数组进行从大到小排序,一趟排序后会将数组中的()排到最后

    • A、最大值
    • B、最小值
    • C、下标最大的值
    • D、下标最小的值

    正确答案:B

  • 第11题:

    在返回数组中的所有值,可以使用array_value()函数()


    正确答案:正确

  • 第12题:

    多选题
    以下关于Array数组对象的说法不正确的是()。
    A

    对数组里数据的排序可以用sort函数,如果排序效果非预期,可以给sort函数加一个排序函数的参数

    B

    reverse用于对数组数据的倒序排列

    C

    向数组的最后位置加一个新元素,可以用pop方法

    D

    unshift方法用于向数组删除第一个元素


    正确答案: C,D
    解析: 暂无解析

  • 第13题:

    下面程序的功能是:用Array函数建立一个含有8个元素的数组,然后查找并在文本框Textl中输出该数组中各元素的最小值。请填空。

    End Sub


    正确答案:
    arrl(1)Min=arrl(i)【解析】本题考查VBA中程序设计的知识。对于这个问题,需要把数组元素依次与最小值比较,如果比当前的最小值还小,则让这个数组元素成为新的最小值,然后继续比较,直至数组元素都比较一遍为止。由于比较的循环从2开始,显然是预先设置最小值为数组的第一个元素即arrlfl);在比较循环内部如果符合If语句的条件,则让这个数组元素成为新的最小值,即Min=arrl(i)。

  • 第14题:

    阅读下列说明、流程图和算法,将应填入(n)处的字句写在对应栏内。

    【流程图说明】

    下图所示的流程图5.3用N-S盒图形式描述了数组Array中的元素被划分的过程。其划分方法;以数组中的第一个元素作为基准数,将小于基准数的元素向低下标端移动,而大于基准数的元素向高下标端移动。当划分结束时,基准数定位于Array[i],并且数组中下标小于i的元素的值均小于基准数,下标大于i的元素的值均大于基准数。设数组A的下界为low,上界为high,数组中的元素互不相同。

    【算法说明】

    将上述划分的思想进一步用于被划分出的数组的两部分,就可以对整个数组实现递增排序。设函数int p(int Array[],int low,int high)实现了上述流程图的划分过程并返回基准数在数组Ar ray中的下标。递归函数void sort(int Array[],int L,int H)的功能是实现数组Array中元素的递增排序。

    【算法】

    void sort(int Array[],int L,int H){

    if (L<H) {

    k=p(Array,L,H);/*p()返回基准数在数组Array中的下标*/

    sort((4));/*小于基准数的元素排序*/

    sort((5));/*大于基准数的元素排序*/

    }

    }


    正确答案:(1)j←j-1
    (1)j←j-1

  • 第15题:

    以下PHP数组函数中,能取得数组键名的函数是()。

    A.Array_keys

    B.Array_values

    C.Array_merge

    D.Array_flip


    参考答案:A

  • 第16题:

    请编写一个函数void fun(int a [],int n),其中a为数组,n为数组a的长度。函数fun()的功能是冒泡排序法将数组a元素按从小到大的顺序排列,实现数组a的升序排列。

    注意:部分源程序已存在文件PROC12.cpp中。

    请勿修改主函数和其他函数中的任何内容,仅在函数fun()的花括号中填写若干语句。

    文件PROC12.cpp的内容如下:

    //PROC12. cpp

    include <iostream>

    using namespace std;

    define MAX 100

    void fun(int a[],int n);

    int main ()

    {

    int a[MAX],n,i;

    cout<<"Please enter the array size n:\n";

    do {

    cin>>n;

    if (n>100)

    cout<<"array size flowover! ReEnter a number(0-100)\n";

    }while (n>100);

    cout<<"Enter the array data:\n";

    for (i=0; i<n; i++)

    cin>>a [ii;

    fun(a[],n);

    for (i=0; i<n; i++)

    cout<<a [i] <<" ";

    cout<<end1;

    return 0;

    }

    void fun(int a[ ],int n)

    {

    // * * * * * * * *

    }


    正确答案:

  • 第17题:

    函数ReadDat实现从文件in.dat中读取一篇英文文章存入到字符串数组XX中;请编制函数SortCharD,其函数的功能是:以行为单位对字符按ASCII码从大到小的顺序进行排序,排序后的结果仍按行重新存入字符串数组XX中。最后main函数调用函数WriteDat把结果XX输出到文件out.dat中。 例:原文:dAe,BfC. CCbbAA结果:fedCBA.,bbCCAA原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。 注意:部分源程序存放在test.C文件中。 请勿改动主函数main、读数据函数ReadDat和输出数据函数WriteDat的内容。


    正确答案:
    【审题关键句】以行为单位对字符按从大到小排序,结果仍按行重新存入字符串数组中。
    【解题思路】
    ①首先定义字符变量ch和无符号整型变量i、j、k。
    ②对字符二维数组XX,在第一层for循环中,变量i从0开始,依次递增直到其值等于maxline,实现对文章每行的扫描,在第二层for时循环中,变量j从0开始,依次递增直到其值等于strlen(xx[i]),即第i行的长度。在第三层循环语句中,变量k从j开始,依次递增直到其值等于strlen(xx[i]),对每一行中的数组元素xx[il[j]、XX[i][k]按照它们的ASCII码值的大小进行比较,如果xx[i][j]的ASCII码小于XX[i][k]的ASCII码,则两者交换,实现整篇文章中的字符按ASCII码值从大到小的顺序进行排序。
    【参考答案】

  • 第18题:

    在Array类中,可以对一维数组中的元素进行排序的方法是()。

    • A、Sort()
    • B、Clear()
    • C、Copy()
    • D、Reverse()

    正确答案:A

  • 第19题:

    在JavaScript中Array对象拥有的方法不包括()。

    • A、 sort()数组排序 
    • B、 length()计算数组长度 
    • C、 concat()数组合并 
    • D、 reverse()数组元素反转

    正确答案:B

  • 第20题:

    对用数组存储的线性表(16,15,32,11,6,30),用快速排序算法进行由小到大排序,若排序下标范围为0~5,选择元素16作为支点,调用一趟快速排序算法后,元素16在数组中的下标位置为()


    正确答案:3

  • 第21题:

    程序调用自身的编程技巧称为什么()

    • A、排序
    • B、递归
    • C、数组
    • D、函数

    正确答案:B

  • 第22题:

    冒泡排序算法中降序排序指的是()

    • A、从高到低排列数组元素值
    • B、从低到高排列数组元素的值
    • C、由横向到纵向排列数组元素的值
    • D、由纵向到横向排列数组元素的值

    正确答案:A

  • 第23题:

    填空题
    在Array类中,可以对一维数组中的元素进行排序的方法是()。

    正确答案: Sort
    解析: 暂无解析

  • 第24题:

    单选题
    在JavaScript中Array对象拥有的方法不包括()。
    A

     sort()数组排序 

    B

     length()计算数组长度 

    C

     concat()数组合并 

    D

     reverse()数组元素反转


    正确答案: B
    解析: 暂无解析