-
2022-04-09 21:30:46
十大排序经典排序算法
//插入排序 #include<stdio.h> int main() { int x[5] = {26,1,8,45,22}; int i, j; int temp;//临时变量,做记录 for (i = 1; i < 5; i++) { temp = x[i]; for (j = i; j > 0 && x[j - 1] > temp; j--) x[j] = x[j-1];//向后移一位 x[j] = temp; } for (i = 0; i < 5; i++) printf("%d\t ",x[i]); return 0; }
更多相关内容 -
C语言:数组排序(插入法排序)
2021-11-11 12:42:13插入法相对较复杂,基本原理是抽出一个数据,在前面数据中寻找相应的位置插入,然后继续下一个数据,直到排序完成 以9、6、15、4、2为例来进行插入法排序 元素[0] 元素[1] 元素[2] 元素[3] 元素[4...插入法相对较复杂,基本原理是抽出一个数据,在前面数据中寻找相应的位置插入,然后继续下一个数据,直到排序完成
以9、6、15、4、2为例来进行插入法排序
元素[0] 元素[1] 元素[2] 元素[3] 元素[4] 初始值 9 6 15 4 2 第1次 9 第2次
6 9 第3次 6 9 15 第4次 4 6 9 15 结果 2 4 6 9 15 从表中可知,第一次排序将第一个元素放在首位,然后取出第二元素与其比较,如果小于第一个数则放在第一个数左边,反之则放在右边。以此类推,将元素逐个取出与前面的相比较,直到最后一个元素找到相应的位置放入
下面通过代码实现
#include<stdio.h> int main() { int arr[10]; /*定义一个10个元素的数组*/ int i,j,temp,pos; /*temp记录最小值,pos记录最小值位置*/ for(i=0;i<=9;i++) /*输入各个数字*/ { scanf("%d",&arr[i]); } for(i=1;i<10;i++) /*从数组的第二个元素开始循环*/ { temp=arr[i]; /*设置插入值*/ pos=i-1; /*记录插入值前一个位置*/ while(pos>=0&&temp<arr[pos]) /*与前面数逐个比较寻找插入值的位置*/ { arr[pos+1]=arr[pos]; /*插入数值*/ pos--; } arr[pos+1]=temp; } for(i=0;i<=9;i++) /*输出排序后的数组*/ { printf("%d ",arr[i]); } return 0; }
插入法排序共需要进行n-1次取出元素并寻找位置插入,因此当序列较为有序时,插入排序有较快的运算速度
-
C语言_数组_直接插入排序
2021-11-16 19:20:31直接插入排序,是指将无序序列中的各元素依次插入到已经有序的数组中。 假设数组中前i-1元素已经有序,现在要将线性表中第i个元素插入到前面的有序子表中,插入过程如下: 以长度为n=8的序列(13,6,1,31,9,27...(只是一个数组题目罢了)
直接插入排序,是指将无序序列中的各元素依次插入到已经有序的数组中。
假设数组中前
i-1
元素已经有序,现在要将线性表中第i
个元素插入到前面的有序子表中,插入过程如下:以长度为
n=8
的序列(13,6,1,31,9,27,5,11)
的插入排序过程做示范: 第1趟:将数组第2
个元素6
向前插入后,则数组中元素为(6,13,1,31,9,27,5,11)
; 第2趟:将数组第3
个元素1
向前插入后,则数组中元素为(1,6,13,31,9,27,5,11)
; 第3趟:将数组第4
个元素31
向前插入后,则数组中元素为(1,6,13,31,9,27,5,11)
; …… 第7趟:将数组第8
个元素11
向前插入后,则数组中元素为(1,5,6,9,11,13,27,31)
; 总之,共执行7
趟操作,可将有n=8
个元素的数组排成有序序列。插入排序从第二个数开始,拿出第二个数向前进行插入排序,一直到最后一个数向前做插入排序,要求输出每趟插入排序的结果。
测试输入
:
10
47 47 21 69 2 8 76 50 9 47
预期输出:
47 47 21 69 2 8 76 50 9 47
21 47 47 69 2 8 76 50 9 47
21 47 47 69 2 8 76 50 9 47
2 21 47 47 69 8 76 50 9 47
2 8 21 47 47 69 76 50 9 47
2 8 21 47 47 69 76 50 9 47
2 8 21 47 47 50 69 76 9 47
2 8 9 21 47 47 50 69 76 47
2 8 9 21 47 47 47 50 69 76
提示: 如果有
10
个整数,要求输出每趟插入排序共9
趟的结果。这里我调用了自定义函数来实现程序,真正编写时可以不用函数。具体怎么做,就请读者自己思考啦。
编写程序:
#include<stdio.h> #define N 100 int ONE (int a[],int n) { int i,m; for (m=2;m<n+1;m++) { a[0]=a[m]; for(i=m-1;i>=1;i--) { if (a[0]<a[i]) a[i+1]=a[i]; else break; } a[i+1]=a[0]; for(i=1;i<=n;i++) printf("%d ",a[i]); printf("\n"); } } int main() { int a[N],n,i; scanf ("%d",&n); for (i=1;i<=n;i++) scanf ("%d",&a[i]); printf ("\n"); ONE(a,n); return 0; }
运行结果:
运行成功!
-
C语言数组+冒泡排序
2019-02-03 17:17:58C语言数组C语言数组+冒泡排序
一、数组知识点
二、冒泡排序
从大到小基本思想: 每趟将相邻两个数字依次比较,将大的调到前面,最终每趟会将最小的沉到最后(这也是起名为冒泡的原因,大的向上冒泡,小的向下沉)。如果有n个数字,则要进行n-1趟比较,第一趟比较中要进行n-1次的两两比较,在第i趟要进行n-1-i次的两两比较。示例代码:
//把一个整数插入从小到大排好序的数组中,要求新的数组仍然满足从小到大的顺序 int data[10]={66,33,126,128,888,10,67,54,20,16}; int temp=0; for(int i=0;i<10-1;i++) for(int j=0;j<10-1-i;j++) if(data[j]<data[j+1]) { temp=data[j]; data[j]=data[j+1]; data[j+1]=temp; } printf("数据从大到小排序如下:\n"); for(i=0;i<10;i++) printf("%d ",data[i]); printf("\n"); printf("请插入一个数字\n"); int interNum; scanf("%d",&interNum); for(i=0;i<10;i++) { if(data[i]<=interNum) { for(int s=9;s>=i;s--) data[s+1]=data[s]; break; } } data[i]=interNum; printf("插入数字后的排序如下:\n"); for(i=0;i<11;i++) printf("%d ",data[i]); printf("\n");
-
C语言——数组中的插入排序法!
2020-07-19 11:15:03C语言——插入排序法! C语言中有很多排序的方法,这次我先介绍一下插入排序法。 -
c语言:数组插入处理
2022-07-09 17:32:55数组插入处理,在顺序排列的数组中插入一个数,按顺序排列打印出来 -
C语言 数组的查找和排序方法 1.顺序查找 2.二分查找;...冒泡排序法 3.(直接)插入排序法
2021-12-14 21:41:40C语言 数组部分知识、实现数组查找和排序 -
C语言 数组排序 – 插入法排序 - C语言零基础入门教程
2021-08-18 09:42:37数组插入法排序原理 三.数组插入法排序实战 四.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.简介 经过前面的学习,我们已经学会了数组遍历,在开发中,我们经常回碰到对数... -
C语言 数组插入 – 插入法排序(顺序版)
2022-03-13 16:09:27数组的插入排序,带有原理图,一看就懂 -
C语言数组操作(长度、输出、拷贝、插入、删除、排序)
2020-11-22 11:20:23有很详细的注释,可以作为一维数组操作函数进行参考。操作可供选择。 int length(int *array); 返回数组元素个数 int copyarray(int *src, int *dest); 成功返回0, 失败返回-1 int printarray(int *array); 打印 ... -
C语言数组的五种排序
2020-01-10 11:04:08插入排序 归并排序 冒泡排序 冒泡排序的基本思想:不断比较相邻的两个数,让较大的元素不断地往后移。经过一轮比较,就选出最大的数;经过第2轮比较,就选出次大的数,以此类推。对于具有N个元素的数组R[N],进行... -
C语言数组的五种简单排序,选择法排序,冒泡法排序、交换法排序、插入法排序、折半法排序
2019-04-25 22:44:45选择法排序是指每次选择索要排序的数组中的最小值(这里是由小到大排序,如果是由大到小排序则需要选择最大值)的数组元素,将这些数组元素的值与前面没有进行排序的数组元素值进行互换 代码实现需要注意的是:声明... -
C语言数组插入问题
2022-01-03 18:37:33数组插入问题。生成一个 10 元素构成的一维数组,数组元素由用户随机输入。要求:先按照 升序排列并输出。再输入一个数,按照升序的规律将其插入并输出 本题思路在于:用冒泡法对数组进行排序,然后找到合适的... -
c语言数组中插入新数据
2019-01-03 15:05:06数组插入数据 在数组的应用中,我们有时会向数组中插入一个数据,而且不打破原来的排序规律,其实数组中的插入数据,就是数据的比较和移动;如果想要弄懂这些方法最好拿笔比划以下,或者debug一下,了解其中的... -
C语言中数组的排序算法详解——选择法、冒泡法、交换法、插入法、折半法
2020-06-16 19:41:53选择法排序是指:如果要把一个数组从小到大排列,那么就从该数组中依次选择最小的数字来排序。从第一个数字开始,将第一个数字与数组中剩下数字中最小的那一个交换位置,然后将第二个数字与剩下数字中最小的那个交换... -
C语言 数组排序 – 快速法排序 - C语言零基础入门教程
2021-08-18 10:01:38目录 一.简介 二.数组快速法排序原理 三.数组快速法排序实战 四....零基础 C/C++ 学习路线推荐 : ...一....经过前面的学习,我们已经学会了数组遍历,在开发中,我们经常回碰到对数组...快速排序法号称是目前最优秀的算法 -
C语言 数组排序 – 选择法排序 - C语言零基础入门教程
2021-08-17 10:15:20目录 一.简介 二.数组选择法排序原理 三.数组选择法排序实战 四....零基础 C/C++ 学习路线推荐 : ...3.插入法排序 4.快速法排序 二.数组选择法排序原理 将要排序的数组分成两部分,一部分是从大到小已经排好序的,一部分 -
C语言-数组函数:插入排序
2021-12-07 20:01:46该函数使用插入排序算法,将数组a的前n个元素按照升序的方式排序。 插入排序算法描述如下: 初始序列:49 38 65 97 76 13 27 49 将元素(38) 插入合适位置: [38 49] 65 97 76 13 27 49 将元素(65) 插入合适位置... -
利用C语言实现数组的排序(直接插入排序法)
2019-04-16 11:59:01直接插入排序基本思想是每一步将一个待排序的记录,插入到前面已经排好序的有序序列中去,直到插完所有元素为止。 #pragma once #include <stdio.h> int insort(int s[], int n) { int i,j; for(i=2;i<=... -
C语言 向有序数组插入(insert1)
2022-03-23 20:18:45已有一个按升序排序的数组,含n个元素。输入整数x,将x插入数组中,使数组元素仍按升序排列。请使用数组实现。 输入 输入包含三行: 第一行是数组元素个数n(1 < n < 20)。 第二行是数组n个元素,相邻两项... -
第六章 C语言数组_C语言对数组元素进行排序(冒泡排序法)
2022-02-20 17:25:04对数组元素进行排序的方法有很多种,比如冒泡排序、归并排序、选择排序、插入排序、快速排序等,其中最经典最需要掌握的是「冒泡排序」。 以从小到大排序为例,冒泡排序的整体思想是这样的: 从数组头部开始,不断... -
七种常见的数组排序算法整理(C语言版本)
2021-05-21 06:46:20~~~C语言版本~~~冒泡排序选择排序直接插入排序二分插入排序希尔排序快速排序堆排序#define EXCHANGE(num1, num2) { num1 = num1 ^ num2;\num2 = num1 ^ num2;\num1 = num1 ^ num2;}排序算法是否稳定:相同元素... -
数组插入处理(C语言描述)
2020-02-11 21:11:07题目描述:一个有序的9元素数组,今插入一个数使得按原来的数列排序 #include<stdio.h> int main() {int z=1,x,i,a[9]; for(i=0;i<9;i++) {scanf("%d",&a[i]);} scanf("%d",&x; for(i=0;i&... -
C语言数组排序——冒泡排序、选择排序、插入排序
2021-05-23 01:32:46一、冒泡排序原理解析:(以从小到大排序为例)在一排数字中,将第一个与第二个比较大小,如果后面的数比前面的小,则交换他们的位置。然后比较第二、第三个……直到比较第n-1个和第n个,此时,每一次比较都将较大的一... -
排序算法之插入排序(C语言)
2020-03-28 16:03:12插入排序算法核心思想:将无序数组中的元素,根据其值的大小,插入有序子数组中。类似于我们打扑克牌的时候,一边摸牌,一遍摆牌。遇到小的直接插到牌首,遇到大的直接插入牌尾,遇到中间的则在中间空出一个位置,将... -
对C语言数组的总结
2021-05-22 15:31:22数组(Array)是一系列相同类型的数据的集合,可以是一维的、二维的、多维的;最常用的是一维数组和二维数组,多维数组较少用到。对数组的总结1) 数组的定义格式为:type arrayName[length]type 为数据类型,arrayName... -
C语言数组实现学生信息管理系统设计
2020-12-26 10:51:05单纯只用多个数组管理学生成绩信息,不使用结构体,该程序最主要的难点是依据学号或总成绩对学生信息进行排序,借助了临时数组来标记排好序的下标。 运行结果如下: 输入数据: 打印数据: 根据学号对信息... -
c语言给数组插入若干个数并令插入后的数列升序输出
2022-04-19 08:03:04c语言给数组插入若干个数并令插入后的数列升序输出