精华内容
下载资源
问答
  • 插入排序算法C语言程序,算法思路:先对数组前两个数进行大小比较,将第三个数与前两个数比较,插入合适位置,再将第四个数与前三个数比较并插入,以此类推
  • 冒泡排序算法选择排序算法插入排序c语言实现
  • 插入排序算法C语言实现

    千次阅读 2017-03-03 17:17:24
    实现如下: #include #include ...插入排序为原地稳定的排序算法,主要思想每次将一个数插入到已排序的数组中去,其渐近确界为 Θ ( n 2 ) Θ ( n 2 ) Θ(n^2) ,计算过程见算法导论第二章。

    实现如下:

    #include <stdio.h>
    #include <stdlib.h>
    
    #define SIZE 20
    
    void insert_sort(int array[], const int size);
    void printArray(int array[], const int size);
    
    int main(int argc, char const *argv[])
    {
        int array[SIZE];
        int count = 0;
        srand(time(NULL));
        for (count = 0; count < SIZE; count++) {
            array[count] = rand() % SIZE + 1;
        }
        printArray(array, SIZE);
        insert_sort(array, SIZE);
        printArray(array, SIZE);
        return 0;
    }
    
    void insert_sort(int array[], const int size) {
        int j, k = 1, temp;
        for (k = 1; k < size; k++) {
            temp = array[k];
            for (j = k - 1; j >= 0 && array[j] > temp; j--) {
                array[j + 1] = array[j];
            }
            array[j + 1] = temp; 
        }
    }
    
    void printArray(int array[], const int size) {
        printf("The current array is:\n");
        int count = 0;
        for (count = 0; count < size; count++) {
            printf("%d ", array[count]);
        }
        printf("\n");
    }

    程序使用标准函数库中函数rand产生SIZE个随机数并对其进行插入排序。
    插入排序为原地稳定的排序算法,主要思想每次将一个数插入到已排序的数组中去,其渐近确界为Θ(n2)Θ(n2),计算过程见算法导论第二章。

    展开全文
  • 直接插入排序算法 #include #include void insert_sort(int a[], int n){ int i,j,temp; for(i=1;i;i++){ j = i; temp = a[i]; while(j>0 && a[j-1]>temp){ a[j] = a[j-1]; j--; } a[j] = ...

    直接插入排序算法

    #include <stdio.h>
    #include <stdlib.h>
    
    void insert_sort(int a[], int n){
    	int i,j,temp;
    	for(i=1;i<n;i++){
    		j = i;
    		temp = a[i];
    		while(j>0 && a[j-1]>temp){
    			a[j] = a[j-1];
    			j--;
    		}
    		a[j] = temp;
    	}
    }
    
    int main(){
    	int a[5] = {2,1,0,4,5};
    	insert_sort(a,5);
    	for(int i=0; i<5; i++){
    		printf("%d ", a[i]);
    	}
    	return 0;
    }


    展开全文
  • #include #include #include #define ARY_LEN 10//声明静态数组 static int array[ARY_LEN];//插入排序 int insertSort(int array[] , int n){ int i , j ; int temp; for( i = 1 ; i ; i++){

    展开全文
  • 问题,用直接插入排序算法实现对顺序表的排序算法。 解决如下。 1纪录类型结构 和 顺序表结构 typedef struct RecordType{ int key; char data[20];}RecordType; #define MAXSIZE 20 typedef struct SqList{ ...

    问题,用直接插入排序算法实现对顺序表的排序算法。 解决如下。

    1纪录类型结构 和 顺序表结构

    typedef struct RecordType
    {
     int key;
     char data[20];
    }RecordType;

    #define MAXSIZE 20

    typedef struct SqList
    {
     RecordType r[MAXSIZE + 1];
     int length;
    }SqList;

    2。建立算法类

    class CAlogrithm
    {
    public:
     void cout(void); //显示输出
     void setMemKey(int i, int k); 设置 排序关键字字段的值
     void setLength(int l); 设置排序的长度
     void InsertSort(); //排序算法实现
    private:
     SqList t;
    };

    //实现函数

    void CAlogrithm::InsertSort()
    {
     SqList & L = t;
     int i=0, j=0;
     for(i=2; i<=L.length; i++)
     {
      if(L.r[i].key < L.r[i - 1].key)
      {
       L.r[0] = L.r[i];
       j = i - 1;
       while(L.r[0].key < L.r[j].key)
       {
        L.r[j+1] = L.r[j];
        j--;
       }
       L.r[j+1] = L.r[0];
      }
     }
    };

    void CAlogrithm::setLength(int l)
    {
     this->t.length = l;
    }

    void CAlogrithm::setMemKey(int i, int k)
    {
     this->t.r[i].key = k;
    }

    void CAlogrithm::cout()
    {
     int i=0;
     printf("----------++++++++++++---------------------/n");
     for(i=1; i<= t.length; i++)
      printf("Before sort r[%d].key=%d/n",i, t.r[i].key);
     printf("----------++++++++++++---------------------/n");

    }

    排序核心算法说明

    一,将第一条记录看作有序子序列

    二,依次从第二条记录起通过比较逐个插入有序子序列中。

    //客户端测试代码

    int main(int argc, char* argv[])
    {
     int i=0;   
     CAlogrithm demo;
     demo.setLength(5);

     demo.setMemKey(1, 6);
     demo.setMemKey(2, 20);
     demo.setMemKey(3, 15);
     demo.setMemKey(4, 7);
     demo.setMemKey(5, 3);
     
     demo.cout();
     demo.InsertSort();
     demo.cout();
     
     return 0;
    }

    //结果输出。

     ----------++++++++++++---------------------
    Before sort r[1].key=6
    Before sort r[2].key=20
    Before sort r[3].key=15
    Before sort r[4].key=7
    Before sort r[5].key=3
    ----------++++++++++++---------------------
    ----------++++++++++++---------------------
    Before sort r[1].key=3
    Before sort r[2].key=6
    Before sort r[3].key=7
    Before sort r[4].key=15
    Before sort r[5].key=20
    ----------++++++++++++---------------------
    Press any key to continue

    时间复杂度。最好情况= O(n^2)

       

    展开全文
  • 插入排序算法是所有排序方法中最简单的一种算法,其主要的实现思想是将数据按照一定的顺序一个一个的插入到有序的表中,最终得到的序列就是已经排序好的数据。直接插入排序是插入排序算法中的一种,采用的方法是:在...
  • 上一节介绍了直接插入排序算法的理论实现和具体的代码实现,如果你善于思考就会发现该算法在查找插入位置时,采用的是顺序查找的方式,而在查找表中数据本身有序的前提下,可以使用折半查找来代替顺序查找,这种排序...
  • 插入排序算法是所有排序方法中最简单的一种算法,其主要的实现思想是将数据按照一定的顺序一个一个的插入到有序的表中,最终得到的序列就是已经排序好的数据。直接插入排序是插入排序算法中的一种,采用的方法是:在...
  • 十大排序算法插入排序C语言程序) 在排序算法中,插入排序算是比较直观易懂的算法,可以想象成玩扑克牌时把手里的牌一张张进行排序(抽出一张牌,然后插入到适合的位置)。 平均时间复杂度:O(n2) 最好情况:O(n...
  • 插入排序算法核心思想:将无序数组中的元素,根据其值的大小,插入有序子数组中。类似于我们打扑克牌的时候,一边摸牌,一遍摆牌。遇到小的直接插到牌首,遇到大的直接插入牌尾,遇到中间的则在中间空出一个位置,将...
  • 插入排序算法C语言实现,在VC开发环境下验证通过
  • /***************************************************************************** ...Function : C语言插入排序完整算法 Author : mike Email : hxtiou@163.com Version : V1.0 Date : 2019-0...
  • 一个插入排序是另一种简单排序,它的思路是:每次从未排好的序列中选出第一个元素插入到已排好的序列中。 它的算法步骤可以大致归纳如下: 1. 从未排好的序列中拿出首元素,并把它赋值给temp变量; 2. 从排好的...
  • 上一节介绍了直接插入排序算法的理论实现和具体的代码实现,如果你善于思考就会发现该算法在查找插入位置时,采用的是顺序查找的方式,而在查找表中数据本身有序的前提下,可以使用折半查找来代替顺序查找,这种排序...
  • 改进排序算法性能,无外乎从减少“比较”和“移动”操作次数,折半插入排序是其中一种改进,插入排序需要在有序子表查找合适的位置,此时可以使用折半查找的方式实现,减少比较次数。折半查找,举例来说明:对于9个...
  • 实现数组元素的插入排序的的关键在于:找到实际应该插入的位置,然后依次移动插入位置及其后面的所有元素,腾出位置放入待插入的元素。算法的描述:step 1 输入插入前已排好序的数组元素step 2 输入待插入的元素...
  • 排序算法c语言描述---直接插入排序

    千次阅读 多人点赞 2013-08-10 17:59:21
    排序算法系列学习,主要描述冒泡排序,选择排序,直接插入排序,希尔排序,堆排序,归并排序,快速排序等排序进行分析。 文章规划: 一。通过自己对排序算法本身的理解,对每个方法写个小测试程序。 具体思路...
  • 插入排序算法(C语言)

    多人点赞 2019-11-25 21:38:05
    这篇博客主要讲插入排序算法的相关内容,当然啦,相比于教科书所举出的冒泡排序,选择排序等排序方式,这个相对要难一些,不过,万变不离其中,只要你热爱算法,那就来看一下我的这篇博客吧! 题目:  给定一乱序...
  • 个人原创总结的常用排序算法C语言示例代码解说PDF,可以动态输出排序过程,以便理解排序算法的主旨思想。包含有直接插入排序,折半插入排序,2路直接插入排序,起泡排序,简单选择排序,快速排序,堆排序,(希尔排序,归并...
  • 为什么插入排序要优于冒泡?  插入排序在于向已排序序列中插入新元素,主要的动作是移动元素,涉及1次赋值,即data[j] = data[j-1];  而冒泡排序在于相邻元素交换位置,涉及3条赋值,即iTmp = data[j+1];data[j+...
  • 基本排序算法C语言实现 在这里,你能找到基本算法的高效实现! 包括:冒泡排序C代码、堆排序C代码、插入排序C代码、 选择排序C代码、归并排序C代码、快速排序C代码
  • 原理默认数组的第一个数据是有个有序数组,由于... 分析由于在最坏的情况下,有序数组中的数据在每次插入操作时,都会被比较一次,所以在最坏的情况下,该排序算法的时间复杂度为O(n2);在最好的情况下,数据基...
  • 排序算法C语言

    2015-03-27 15:26:01
    冒泡排序 简单排序 快速排序 堆排序 计数排序 插入排序 递归排序 希尔排序
  • 插入排序的(Insertion Sort)是一种最简单的排序方法,它的基本操作是将一个记录插入到已排好序的有序表中,从而得到一个新的、记录数增一的有序表。 基本思想: 假如待排序的记录存放在数组A[0,1....n-1]中。初始...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,731
精华内容 692
关键字:

插入排序算法c语言

c语言 订阅