首页 > 其他分享 >利用直接插入排序进行将数组序列从小到大排序

利用直接插入排序进行将数组序列从小到大排序

时间:2022-11-24 17:59:30浏览次数:36  
标签:24 10 23 插入排序 45 52 89 排序 从小到大

1 题目

功能:直接插入排序
描述:利用直接插入排序进行将数组序列从小到大排序

2 思路

原始顺序: 34, 12, 45, 3, 8, 23, 89, 52, 24, 10

在代码中将数组 a[0] 置为监视哨

趟数 监视哨 排序结果
1 34 (12,) 34, 45, 3, 8, 23, 89, 52, 24, 10
2 12 (12, 34,) 45, 3, 8, 23, 89, 52, 24, 10
3 45 (12, 34, 45,) 3, 8, 23, 89, 52, 24, 10
4 3 (3, 12, 34, 45,) 8, 23, 89, 52, 24, 10
5 8 (3, 8, 12, 34, 45,) 23, 89, 52, 24, 10
6 23 (3, 8, 12, 23, 34, 45,) 89, 52, 24, 10
7 89 (3, 8, 12, 23, 34, 45, 89,) 52, 24, 10
8 52 (3, 8, 12, 23, 34, 45, 52, 89,) 24, 10
9 24 (3, 8, 12, 23, 24, 34, 45, 52, 89,) 10
10 10 (3, 8, 10, 12, 23, 24, 34, 45, 52, 89,)

以上是整个的插入排序算法的过程

3 代码

#include <stdio.h> 
#include <stdlib.h>

/**
功能:直接插入排序
描述:利用直接插入排序进行将数组序列从小到大排序
**/

void insort(int s[], int n)	{					// 自定义函数isort

    int i, j;
    for (i = 2; i <= n; i++) {					// 数组下标从2开始,0 位置做监视哨,1位置一个数据无可比性
        s[0] = s[i];							// 给监视哨赋值
        j = i - 1;								// 确定要进行比较的元素的最右边位置
        while (s[0] < s[j]) {
            s[j + 1] = s[j];					// 数据右移
            j--;								// 移向左边一个未比较的数
        }
        s[j + 1] = s[0];						// 在确定的位置插入s[i]
    }
}

int main(int argc, char const *argv[]) { 
    int a[11], i;									// 定义数组及变量为基本整型
    printf("请输入10个数据:\n");
    for (i = 1; i <= 10; i++)
        scanf("%d", &a[i]);							// 接收从键盘中输入的10个数据到数组a中
    printf("原始顺序:\n");
    for (i = 1; i < 11; i++)
        printf("%3d", a[i]);						// 将未排序前的顺序输出
    insort(a, 10);									// 调用自定义函数isort()
    printf("\n插入数据排序后顺序:\n");
    for (i = 1; i < 11; i++)
        printf("%3d", a[i]);						// 将排序后的数组输出
    printf("\n");
}

示例结果:

$ gcc ex058.c -o demo
$ ./demo
请输入10个数据:
34
12
45
3
8
23
89
52
24
10
原始顺序:
 34 12 45  3  8 23 89 52 24 10
插入数据排序后顺序:
  3  8 10 12 23 24 34 45 52 89

标签:24,10,23,插入排序,45,52,89,排序,从小到大
From: https://www.cnblogs.com/hahaha-py-fast/p/16922665.html

相关文章

  • 一维数组的排序算法
    一维数组的排序算法冒泡排序气泡在水中向上涌数据在数组中不断的向前移动冒泡排序的过程代码运行publicclassarry7{publicstaticvoidmain(String[]args){......
  • C#对类所有属性进行排序并输出Json数据以及对Json数据进行排序
    ///<summary>///对自定义类进行升序排序,并输出Json字符串///</summary>///<example>///stringjson=JsonConvert.SerializeObject(new自定义类名(){...},new......
  • Kettle 读取Excel时增加排序字段
    选择指定tab:1.ExcelRowIndex:为该行在源excel中的行索引2.RowIndex:为读取数据时新集合中的行索引ExcelRowIndex和RowIndex 并不相等  Reference:Kettle连接......
  • 插入排序之直接插入排序,折半插入,希尔排序详解和特点
    插入排序引申了三种:直接插入排序,折半插入排序,希尔排序一、直接插入排序直接插入排序排序方法: 1、查找出L(i)在L[1……i-1]中的位置k。2、将L[k……i-1]所有元素全部后移......
  • Qt QList结构体排序
    1.应用场景在实际项目中,需要比对结果按照相似度排序;可以直接用qSort去比对,采用lamla表达式作为比较函数;//是一个QMap对象的List QVariantList m_PicComapreQueue.appe......
  • luogu P8500 [NOI2022] 冒泡排序
    题面传送门这个部分分提示得太妙了。首先这个冒泡排序的壳已经被套烂了,就是对逆序对计数。首先观察一下,发现第一个样例解释中在等于某个限制对应的最小值的时候取到逆序......
  • 力扣81(java&python)-搜索旋转排序数组 II(中等)
    题目:已知存在一个按非降序排列的整数数组nums,数组中的值不必互不相同。在传递给函数之前,nums在预先未知的某个下标k(0<=k<nums.length)上进行了旋转,使数组变为[......
  • 快速排序算法
    快速排序算法源代码地址:GitHub-firstsaofan/Data-structure-and-algorithmatdevelop如果觉得样式不好:跳转即可(md文件复制过来有些样式会不一样)原文地址:https://li......
  • Luogu7113 & 4017 - 拓扑排序 -
    题目链接:https://www.luogu.com.cn/problem/P7113题解:7113拓扑排序一下,从每个开始点放水,每次*1/size扩展一下即可。要用__int1284017按照拓扑序简单dp一下//byS......
  • 8.排序算法
    排序分类  1.内部排序  只将需要处理的所有数据都加载到内存寄存器中(内存)进行排序。  2.外部排序  数据量过大,无法全部加载到内存中,需要借助外部存储(文件......