C语言之插入排序

插入法排序的要领就是每读入一个数立即插入到最终存放的数组中,每次插入都使得该数组有序。

上代码:

#include <stdio.h>
#include <stdlib.h>
#define n 10 

int main()
{
  int a[n]={-1,3,6,9,13,22,27,32,49};  /*注意留一个空间给待插数*/
  int x,j,k;
  x = rand()%100;
  printf("随机产生x的值为:%d\n",x);
  if(x>a[n-2])
  {
     a[n-1]=x ;    /*比最后一个数还大就往最后一个元素中存放*/
  }
  else          /*查找待插位置*/
  {
       j=0;
       while( j<=n-2 && x>a[j])
	   {
 			j++;
 	   }
	   for(k=n-2; k>=j; k--)
	   {    /*从最后一个数开始直到待插位置上的数依次后移一位*/
			a[k+1]=a[k];
	   }
		       a[j]=x;      /*插入待插数*/
  }
  printf("输出:\n");
       for(j=0;j<=n-1;j++)
	   	 printf("%d  ",a[j]);
	return 0 ;
}

运行结果:

随机产生一个数插入到已有的数组中,排序后输出:

时间: 2024-10-12 12:47:45

C语言之插入排序的相关文章

C语言-排序-插入排序

插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止. void insertSort(int array[], int length) { int key; for(int i=1; i<length; i++) { key = array[i]; for(int j=i-1; j>=0 && array[j] > key; j--) { array[j+1] =

一起talk C栗子吧(第二十七回:C语言实例--插入排序)

各位看官们,大家好,上一回中咱们说的是冒泡排序的例子,这一回咱们说的例子是:插入排序.闲话休 提,言归正转.让我们一起talk C栗子吧! 看官们,我们这回说的插入排序和前一回说的冒泡排序一样,也是一种排序方法,只是它们的原理的不同而 已.插入排序的原理为:从容器中取出一个元素,把该元素插入已经有序的另外一个容器中,并且保持该容 器中元素原来的顺序. 插入排序的实现步骤: 1.从容器第二个元素开始到容器尾部遍历容器,遍历过程中取出当前位置的元素和该元素的前一个元素 进行比较,判断它们是否符合排序

java 语言实现插入排序

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 public class InsertSort{     public static void main(String[] args){         int[] sortArray = new int[]{5,7,4,2,9,8,3,6};         System.out.println("before sorting ,

Go语言(Golang)插入排序

package main import ( "fmt" ) func InsertSort(arr *[6]int) { for i := 1; i < len(arr); i++ { val := arr[i] index := i - 1 for index >= 0 && arr[index] > val { arr[index+1] = arr[index] index-- } if index + 1 == i { continue } ar

排序算法 c实现

c语言实现插入排序.冒泡排序.选择排序.快速排序.堆排序.归并排序.希尔排序示例,需要的朋友可以参考下 实现以下排序 插入排序O(n^2) 冒泡排序 O(n^2) 选择排序 O(n^2) 快速排序 O(n log n) 堆排序 O(n log n) 归并排序 O(n log n) 希尔排序 O(n^1.25) 1.插入排序 O(n^2) 一般来说,插入排序都采用in-place在数组上实现.具体算法描述如下:⒈ 从第一个元素开始,该元素可以认为已经被排序⒉ 取出下一个元素,在已经排序的元素序列中

嵌入式相关3

嵌入式软件笔试 Chapter1 语法类 1 .volatile作用?应用场合举3例 volatile修饰的变量表示这个变量可能会被意想不到的改变,对该变量的操作将不作优化,用到该变量时都从这个变量的原始地址读取,而不是用保存在寄存器里的备份. Volatile常用在: 1). 硬件寄存器(如:状态寄存器). 2). 中断程序中会访问到的非自动变量(Non-automatic variables). 3). 多线程应用中几个任务共享的变量 2. 一个参数既可以是const还可以是volatile

《算法导论》读书笔记(一)

本章是本书的开篇,介绍了什么是算法,为什么要学习算法,算法在计算机中的地位及作用. 算法(algorithm)简单来说就是定义良好的计算机过程,它取一个或一组值作为输入,并产生出一个或一组值作为输出.即算法就是一系列的计算步骤,用来将输入数据转换成输出数据. 书中有一句话非常好: Having a solid base of algorithm knowledge and technique is one characteristic that separates the truly skill

直接插入排序(Straight Insertion Sort)的C语言实现

原创文章,转载请注明来自钢铁侠Mac博客http://www.cnblogs.com/gangtiexia 直接插入排序(Straight Insertion Sort)的基本思想是将新记录插入到已经排好序的有序表中,初始有序表只有无序表的第一个数据,依次对无序表每个数据进行直接插入排序,从而得到了有序表,具体步骤为 若新记录<有序表高位l.r[j],则设置哨兵 有序表后移,j+1=j 重复第2步,直至新纪录>=有序表中的j记录,则j+1就是要插入的位置 从而得到一个新的.记录数增加1的有序表

折半插入排序(Binary Insertion Sort)的C语言实现

原创文章,转载请注明来自钢铁侠Mac博客http://www.cnblogs.com/gangtiexia 折半插入排序(Binary Insertion Sort)的基本思想是将新记录插入到已经排好序的有序表中,初始有序表只有无序表的第一个数据,依次对无序表每个数据进行折半插入排序,从而得到了有序表,具体步骤为 先将记录存在L.r[0]中,low=有序表低位下标,high=有序表高位下标 若low<=high,就将L.r[0]与mid=(low+high)/2位的数据比较,如果L.r[0]>