精华内容
下载资源
问答
  • c语言插入法排序
    千次阅读
    2021-11-11 12:42:13

    插入法相对较复杂,基本原理是抽出一个数据,在前面数据中寻找相应的位置插入,然后继续下一个数据,直到排序完成

    以9、6、15、4、2为例来进行插入法排序

    元素[0]元素[1]元素[2]元素[3]元素[4]
    初始值961542
    第1次9

    第2次

    69
    第3次6915
    第4次46915
    结果246915

    从表中可知,第一次排序将第一个元素放在首位,然后取出第二元素与其比较,如果小于第一个数则放在第一个数左边,反之则放在右边。以此类推,将元素逐个取出与前面的相比较,直到最后一个元素找到相应的位置放入

    下面通过代码实现

    #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语言插入法排序

    2011-10-04 22:26:00
    C语言插入法排序C语言插入法排序C语言插入法排序C语言插入法排序
  • C语言插入法排序和选择排序
    • 插入法排序
    void InsertSort(int* br, int n) //插入法排序
    {
    	assert(br != NULL);
    	for (int i = 1; i < n; i++)
    	{
    		if (br[i - 1] > br[i])
    		{
    			int key = br[i];
    			int j = i - 1;
    			do
    			{
    				br[j + 1] = br[j];
    				j--;
    			} while (j >= 0 && br[j] > key);
    			br[j + 1] = key;
    
    		}
    		
    	}
    }
    
    
    • 选择排序
    void SelectSort(int* br, int n)//选择排序
    {
    	assert(br != NULL);
    	for (int i = 0; i < n - 1; i++)
    	{      
    		    
    		for (int j = i+1; j < n; j++)
    		{
    			int minpos = i;
    			if (br[minpos] > br[j])
    			{
    				minpos=j;
    			}
    			if(minpos!=i)
    			Swap(&br[minpos], &br[i]);
    		}
    		  
    	}
    
    }
    
    
    展开全文
  • //插入排序,以扑克牌为例 #include<stdio.h> int main() { int A[] = { 5,3,5,0,1 }; int n = 5, i, j, key; for (j = 1;j < 5;j++) { key = A[j];//要插入的牌 i = j - 1;//手中的最右边的牌...
    //插入排序,以扑克牌为例
    #include<stdio.h>
    int main()
    {
    	int A[] = { 5,3,5,0,1 };
    	int n = 5, i, j, key;
    	for (j = 1;j < 5;j++)
    	{
    		key = A[j];//要插入的牌
    		i = j - 1;//手中的最右边的牌(最大)
    		/*当手中有一张牌(该牌位置为i)小于要插入的牌
    		或者要插入的牌为最小,则while循环结束*/
    		while (i >= 0 && A[i] > key)
    		{ 
    			A[i + 1] = A[i];//从右往左,若第一张牌大于要插入的牌,则右移
    			i--;//然后判断下一张牌与要插入牌的大小
    		}
    		A[i + 1] = key;//i+1为插入的位置,i为小于插入牌的位置
    	}
    	printf("%d %d %d %d %d", A[0], A[1], A[2], A[3], A[4]);
    	
    	return 0}
    

    我的第一篇博客
    记录下我所学习的算法

    展开全文
  • c语言三种插入排序算法

    千次阅读 2021-11-18 09:37:42
    一、直接插入排序:前面基本有序,小的往前插 #include <stdio.h> int *Sort(int A[],int n){ /*直接插入排序精简版*/ int i,j; for ( i = 1; i <= n; i++ ) if ( A[i] < A[i-1] ){ A[0] = A[i]...

    一、直接插入排序:前面基本有序,小的往前插入

    #include <stdio.h>
    
    
    int *Sort(int A[],int n){
    /*直接插入排序精简版*/
        int i,j;
        for ( i = 1; i <= n; i++ )
            if ( A[i] < A[i-1] ){
                A[0] = A[i];
                for ( j = i; A[0] < A[j-1]; --j )
                    A[j] = A[j-1];
                
                A[j] = A[0];
    
            }
        return A;
    }
    
    
    int main() {
    
        int a[] = {0,0,11,4,3,6,2,7,5,8,9,10,1}; //A[0]第一个是哨兵
        int lens = sizeof(a)/sizeof(a[0]); //字节总数/单个字节数
        int *b = Sort(a,lens);
        printf(" lens = %d ",lens);
        for (int i = 1; i < lens; ++i) { // A[0]第一个是哨兵
            printf("%d  ",b[i]);
        }
        return 0;
    }

    二、折半插入排序:前面基本有序,小的使用折半方式往前插入

    #include <stdio.h>
    int *Sort(int A[],int n){
    /*直接插入排序精简版*/
        int i,j,low,high,mid,temp;
        for(i=1;i<n;i++){
            temp = A[i];
            low = 0;
            high = i - 1;
            while(low<=high){
                mid = (low+high)/2;
                if (A[mid] > temp) high = mid-1;
                else low = mid + 1;
            }
            for (j=i-1;j>=low;j--);
                A[j+1] = A[j];
            if(low!=i)
                A[low] = temp;
        };
       
        return A;
    }
    
    
    int main() {
    
        int a[] = {8,6,9,2,4,1,0}; //A[0]第一个是哨兵
        int lens = sizeof(a)/sizeof(a[0]); //字节总数/单个字节数
        int *b = Sort(a,lens);
        printf(" lens = %d ",lens);
        for (int i = 0; i < lens; ++i) { // A[0]第一个是哨兵
            printf("%d  ",b[i]);
        }
        return 0;
    }

    展开全文
  • c语言 插入排序法

    2018-06-01 16:00:21
    c语言基本插入排序法c语言基本插入排序法c语言基本插入排序法c语言基本插入排序法
  • C语言-简单插入排序

    千次阅读 2021-11-09 10:21:26
    直接插入排序是一种简单的插入排序法,其基本思想是:把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列。 2、时间复杂度 当数据正序时,...
  • 排序算法之插入排序C语言实现

    千次阅读 多人点赞 2020-04-04 22:10:26
    插入排序 1、直接插入排序 算法思想:直接插入排序是无序序列插入到有序序列中,通常假定a[0]为已经排好序的子序列,然后将剩下无序序列一个一个插入到有序的子序列中。适用于基本有序和数据量不大的情况。 例如对于...
  • 直接插入排序
  • c语言实现插入排序

    千次阅读 2022-04-06 19:53:08
    插入排序:也称直接插入排序。基本思路:每一步将一个数插入一个已经排好的序列中,并使之保持有序。直到插完所有的数为止。 //插入排序(从小到大) #include<stdio.h> #include<stdlib.h> int number...
  • C语言——数组中的插入排序法

    千次阅读 2020-07-19 11:15:03
    C语言——插入排序法C语言中有很多排序的方法,这次我先介绍一下插入排序法
  • C语言 直接插入排序法#includeint insertSort(int s[],int n){int i,j,t;for (i=1;i{t=s[i]; /* 操作当前元素,先保存在其它变量中 */for (j=i-1;j>-1&&s[j]>t;j--) /* 从当前元素的上一个元素开始...
  • C语言插入排序算法

    2021-05-19 14:45:22
    直接插入排序是一种简单的插入排序法,其基本思想是:把待排序的纪录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的纪录插入完为止,得到一个新的有序序列。选择排序对大小为N的无序数组R[N]...
  • 使用插入排序将下面的数字按照从小到大的顺序排列 步骤1:数组中已经排好的是{1},将9插入数组中 步骤2:数组中已经排好的是{2,9},将5插入数组中 步骤3:数组中已经排好的是{2,5,9},将4插入数组中 步骤4:...
  • 主要介绍了C++实现选择排序、直接插入排序、冒泡排序的代码示例,相当简洁直观,也是算法和数据结构学习中的基础,需要的朋友可以参考下
  • C语言算法--直接插入排序法

    千次阅读 多人点赞 2018-07-09 23:53:47
    直接插入排序法的思想是:  对于一个数组,检查其中第i个数字,如果在它的左边的数字比它大,进行交换,这个动作一直继续下去,直到这个数字的左边数字比它还要小,就可以停止了。插入排序法主要的回圈有两个变数...
  • C语言实现插入排序

    2022-01-15 19:17:16
    } void sort_array(int *arr, int n) // 编程实现《插入排序算法》:将乱序序列arr转化为升序序列 // 函数参数:乱序整数数组(无重复元素) 数组长度 // 要求输出:调用print_array(int *arr, int n)输出前三次...
  • 042 插入排序 C语言
  • 这篇文章主要介绍了C语言中快速排序和插入排序优化的实现,包括双向划分快速排序方法的介绍,需要的朋友可以参考下。
  • 用冒泡对10个整数(这10个整数可随机生成,可初始化,也可以逐个从键盘读入)排序。然后输入一个数,将该数插入到数组中,使插入后的数组仍然有序。并输出插入后的数组。</p>
  • 主要介绍了C语言中直接插入排序与直接选择排序实现,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,需要的朋友可以参考下
  • 课程的随堂作业,C语言的,用dev就能运行,萌新代码,勿喷,仅仅帮助不想写作业的朋友方便一下,反正老师也不会仔细检查的
  • c程序,选择排序和插入排序。VC++工程。 c程序,选择排序和插入排序。VC++工程。
  • C语言 ——插入排序(升序、降序)

    千次阅读 2021-08-26 18:45:43
    插入排序如图: 觉得这个图比较易懂,贴了过来,B站“AF程序猿”视频中截到的 #include<stdio.h> #include<stdlib.h> #include<time.h> /*对用随机函数生产的10个整数 进行升序 插入排序 */ ...
  • C语言-插入排序 (数据结构)
  • 本文主要介绍C语言中冒泡、选择插入法三种常见排序算法的知识,希望对您的学习有所帮助。
  • C语言插入排序

    千次阅读 2022-04-22 15:03:32
    } //插入排序 /* 这里的算法思想是先对前两个元素排序,然后从第三个元素开始,与前一个元素比较,如果大于前一个元素,则默认有序,如果 小与前一个元素,则一直项前比较,直到找到大于自己的元素,然后将大于自己...
  • 插入排序 /* * 直接插入排序 * 原理: * 将待排序序列第一个元素看做一个有序序列 * * 从头到尾依次遍历未排序序列 * * 将遍历到的每个元素插入有序序列的适当位置 */ #include <stdio.h> //插入排序 ...
  • 主要介绍了C语言基本排序算法之插入排序与直接选择排序实现方法,结合具体实例形式分析了插入排序与直接选择排序的定义、使用方法及相关注意事项,需要的朋友可以参考下

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 62,602
精华内容 25,040
关键字:

c语言插入法排序

友情链接: spwm.zip