dyjh365 

 

 二维码名片

计算机考研考点练习C语言-排序算法及相关练习题

来源:四川中公考研 2021-11-09

考研答疑  |  免费领好课入口

2022考研初试考场查询系统  

一、案例
(一)冒泡排序

冒泡排序在一组需要排序的数组中,对两两数据顺序与要求顺序相反时,交换数据,使大的数据往后移,每趟排序将最大的数放在最后的位置上,如下:

代码实现:

void bubbleSort(int arr, int n) {

    for (int i=0;i<n-1;i++)

        for (int j=0;j<n-i-1;j++)

        {

            //如果前面的数比后面大,进行交换

            if(arr[j]>arr[j+1]){

                int temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;

            }

        }

}

int main()

{

    int arr[]={3,6,4,2,11,10,5};

    bubbleSort(arr,7);

    for (int j=0;j<7;j++)

        printf("%d",arr[j]);

(二)选择排序

选出最小的数和第一个数交换,再在剩余的数中又选择最小的和第二个数交换,依次类推,如图所示:

代码实现:

void selectSort(int arr[],int n)

{

int i,j,minValue, tmp;

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

{

minValue = i;

for(j = i + 1; j < n; j++)

{

if(arr[minValue] > arr[j])

{

minValue = j;

}

}

if(minValue != i)

{

tmp = arr[i];

arr[i] = arr[minValue];

arr[minValue] = tmp;

}

}

}

void printArray(int arr[], int n)

{

int i;

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

{

printf("%d ", arr[i]);

}

printf("\n");

}

void main()

{

int arr[6]={7,4,-2,19,13,6};

printArray(arr, 6);

selectSort(arr, 6);

printArray(arr, 6);

return;

}

(三)插入排序

插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。

代码实现:

void insertSort(int arr[],int n)

{

int i,j,tmp;

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

{

for(j=i;j>0;j--)

{

if(arr[j]<arr[j-1])

{

tmp=arr[j];

arr[j]=arr[j-1];

arr[j-1]=tmp;

}

else

{

break;

}

}

}

}

void printArray(int arr[],int n)

{

int i;

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

{

printf("%d",arr[i]);

}

printf("\n");

}

int main()

{

int arr[10]={49,38,65,97,76,13,27,49};

printArray(arr,8);

insertSort(arr,8);

printArray(arr,8);

}

二、练习

【例1】

编程从键盘给一个长度为10的整型数组输入十个整数,并将其下标为奇数的元素从小到大排序。

【答案与解析】

#include<stdio.h>

void bubbleSort(int arr[], int n) {

    for (int i=1;i<n-1;i=i+2)

        for (int j=1;j<n-i-1;j=j+2)

        {

            if(arr[j]>arr[j+2]){

                int temp=arr[j];arr[j]=arr[j+2];arr[j+2]=temp;

            }

        }

}

int main()

{

    int arr[10];

for (int j=0;j<10;j++)

        scanf("%d",arr+j);

    bubbleSort(arr,10);

    for (int j=1;j<10;j+=2)

        printf("%d\n",arr[j]);考研实用工具推荐
1、
2022考研院校专业匹配查询系统
2、近4年全国各在招院校专业复试分数线查询
3、历年调剂信息查询
4、历年各院校专业目录查询
5、历年各院校报录比查询
6、历年各院校参考书目录查询

阅读全文

 免责声明:本站所提供的内容均来源于网友提供或网络搜集,由本站编辑整理,仅供个人研究、交流学习使用,不涉及商业盈利目的。如涉及版权问题,请联系本站管理员予以更改或删除。

分享到

下一篇:【计算机考研考点】计算机网络-分组交换及相关练习题


四川中公考研

成都市武侯区科华北路62号力宝大厦3楼南区

网址:sc.kaoyan365.cn

预约参观:加微信dyjh365

咨询时间

周一至周日 9:00-18:00 全年无休

  • 川大学习中心
  • 双流学习中心
  • 绵师学习中心
  • 郫县学习中心
  • 川师学习中心
  • 郫县学习中心
  • 南充学习中心
  • 川师学习中心
  • 理工学习中心
  • 乐山学习中心
  • 温江学习中心
  • 宜宾学习中心
  • 传媒学习中心
  • 简阳学习中心
  • 成大学习中心
  • 金堂学习中心
  • 彭山学习中心
  • 川大望江学习中心

    地址:武侯区科华北路62号力宝大厦3楼南区

    电话:13408553731

  • 双流学习中心

    地址:成都市双流区大件路文星段25号

    电话:13683437962

  • 绵师教学点

    地址:磨家校区双圣小区A区42栋2楼中公教育

    电话: 08162296886

  • 郫县教学点

    地址:西华大学西华记忆中国移动营业厅内

    电话:19508124705

  • 川师成龙教学点

    地址:川师成龙校区西门云立方附205中公教育

    电话:19508170670

  • 旅游学院教学点

    地址:四川旅游学院继续教育学院一层考研服务中心

    电话:19508170670

  • 南充西华师范大学教学点

    地址:南充市顺庆区师大路华府丽都一单元10楼

    电话:15583027321

  • 川师狮子山教学点

    地址:南门校园广场3楼A3-10

    电话:15982307862

  • 成都理工大学教学点

    地址:成都市成华区民兴路830号理工东苑中公教育

    电话:17711076409

  • 乐山成理工院教学点

    地址:肖坝街道青衣路33号新业中心写字楼12楼中公教育2092298

    电话:0833-2092298

  • 成都温江教学点

    地址:四川省成都市温江区南熏大道3段863号2楼

    电话:19508173206

  • 宜宾教学点

    地址:宜宾市临港科教公元π二楼

    电话:13716324244

  • 市区教学点

    地址:宜宾叙州区南岸重百新世纪百货13楼

    电话:13716324244

  • 成都传媒学院教学点

    地址:美乐广场一栋二楼中公教育

    电话:17380142420

  • 简阳教学点

    地址:吉利学院校内青春馆三楼(创新创业孵化中心)

    电话:15283737083

  • 成都大学教学点

    地址:请拨打下方电话亲自来接

    电话:15680688021

  • 成都金堂教学点

    地址:成都文理学院国教楼1楼104办公室

    电话:18981881686

  • 彭山教学点

    地址:眉山市彭山区锦江大道1号四川大学锦江学院

    电话:17381826465


关于中公考研| 电脑端| 网站地图| 返回首页

地址:北京市海淀区学清路23号汉华世纪大厦B座

Copyright©1999-2016 北京中公教育科技有限公司.All Rights Reserved

返回
顶部
 在线咨询  电话咨询  预约院校
 
 
择校预约
四川中公考研预约咨询:择校择专业 跨专业报考 个性化问题解答
获取验证码