C语言插入排序算法

#include <stdio.h>

#define kCount 10

int main()

{

int array[kCount] = {92, 77, 67, 8, 6, 84, 55, 85, 43, 67};

for (int i = 1; i<kCount; i++) {

int temp = array[i];

int j = i-1;

while (temp<array[j]) {

array[j+1] = array[j];

j--;

if (j==-1) {

break;

}

}

array[j+1] = temp;

}

for (int i = 0; i<kCount; i++) {

printf("%d\t", array[i]);

}

return 0;

}

时间: 2024-10-05 23:47:43

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

C语言选择、冒泡、插入排序算法

#include <stdio.h> #pragma mark 选择排序算法 void xuanze_array(int *array, int len) { for (int i = 0; i<len-1; i++) { for (int j = i+1; j<len; j++) { if (array[i]<array[j]) { int temp = array[i]; array[i] = array[j]; array[j] = temp; } } } } #pra

C语言排序算法总结

学计算机程序设计的应该都知道,算法是程序之魂.所谓算法,就是解决问题的方法加上有限的实现步骤.算法的特点有有穷性,确定性,有效性,有零个或多个输入,有一个或多个输出.下面我们就来简单总结一下C语言中的三种经典排序算法. 一.冒泡算法. 所谓冒泡排序法,就是对一组数字进行从大到小或从小到大排序的一种算法.具体方法是,相邻的数字两两交换.从第一个数值开始,如果相邻两个数的排列顺序与我们的期望不相同,则将两个数的位置进行交换(对调):如果其余我们期望的相同,则不交换位置.重复这样的过程,一直到最后没有

C语言排序算法复习

排序算法有很多种,这里在复习和分析的基础上,做一个自己的总结: 首先要知道有哪些排序算法,google一下,有云C语言7大经典排序算法(也有8大).主要包括冒泡排序,快速排序,选择排序,插入排序,希尔排序,归并排序,堆排序,8大的还有基数排序.各有各的版本,代码写法也各不相同.所以这里以整理思路为先,代码只是作为自己的一个备份. 搞清楚的概念:稳定排序和不稳定排序,就看序列中两个值相等的数,排完序之后的相对位置是否改变,如果改变了就不稳定. 内部排序和外部排序,只用到内存即可完成排序的就叫内部排

c语言排序算法

用C语言总结一下常用排序算法,虽然大多数语言里已经提供了排序算法,比如C函数库中提供了qsort排序函数(内部为快速排序实现),但理解排序算法的思想的意义远远超过了实用的价值.这里我总结了常用的排序算法,并用C语言实现.这些算法的书写顺序也有一定的关联,比如希尔排序是对插入算法的改进,快速排序是对冒泡排序的改进,快速排序和归并排序都用递归实现.注:每种方法的实现尽量提供了相同的形参列表.这里并没用涉及堆排序,箱排序等算法的实现. 插入排序算法概要:插入排序依据遍历到第N个元素的时候前面的N-1个

【插入排序算法】初学算法之排序--直接插入排序

前言: 厚厚一本<算法第四版>,看到五分之一就已经收益良多,而前五分之一又大部分是关于排序,有冒泡排序.快速排序.堆排序.直接插入排序.希尔排序等等,理解起来也不算特别的难,今天就跟大家分享其中的一种 —— 直接插入排序算法,这里我实现了javascript和java两个语言版本. 思路: 在生活中,如果我们要对扑克牌按大小排序,我们会怎么排呢? ① 首先找出一张牌 放在桌子上 ② 拿出第二张牌,比第一张小就放上面,比第一张大就放下面 ③ 拿出第三张牌,比第一张小就放上面,比第一张大就和第二张

[C语言] 插入排序之直接插入的特性及实现

[C语言] 插入排序之直接插入的特性及实现 1.算法特性 直接插入是一种简单.稳定的插入排序方法,其时间复杂度最好为O(n).最差为O(n2).平均为O(n2),空间复杂度为O(1). 2.算法思路: 以升序排列为例,先设置一个临时变量存储将要移动的插入值,再将其与其之前的数据从后往前依次进行比较.当比较值比插入值大时,比较值后移一位,插入值继续向前检索:当比较值小于等于插入值时,插入值插入比较值的后一位.经过一轮循环便可以将所有数据排列有序. 3.实现代码 1 #include <stdio.

插入排序算法回顾(python实现)

插入排序的基本方法是:每步将一个待排序的记录按其关键字的大小插到前面已经排序的序列中的适当位置,直到全部记录插入完毕为止. 折半插入排序是对插入排序算法的一种改进,由于排序算法过程中,就是不断的依次将元素插入前面已排好序的序列中.由于前半部分为已排好序的数列,这样我们不用按顺序依次寻找插入点,可以采用折半查找的方法来加快寻找插入点的速度.具体操作为:在将一个新元素插入已排好序的数组的过程中,寻找插入点时,将待插入区域的首元素设置为a[low],末元素设置为a[high],则轮比较时将待插入元素与

插入排序算法的学习

插入排序算法: 例如序列:5,6,3,7,8,2 采用插入排序算法对序列进行排序, 具体步骤如下: 第一步: 将6单独提取出来,放在一个变量中去寄存: 然后让5与寄存项进行比较,不满足前项大于寄存项,保持原有序列不变 序列为:5,6,3,7,8,2 第二步: 将3单独提取出来,放在一个变量中去寄存: 然后让6与寄存项进行比较,满足前项大于寄存项,将3位置用6覆盖掉: 序列为:5,6,6,7,8,2 然后将5与寄存项进行比较,满足前项大于寄存项,将第一个6位置用5覆盖掉: 序列为:5,5,6,7,

“深入理解”—插入排序算法

总结下自己对插入排序的理解. 插入排序算法思想:每趟将一个元素,按照其关键字的大小插入到它前面已经排序的子序列中,依此重复,直到插入全部元素. 插入排序包括:直接插入排序.二分插入排序以及希尔排序. 1.直接插入排序: public void insert(int[] a) { for(int i=1;i<a.length;i++) //n-1此扫描,依次向前插入n-1个元素 { int temp=a[i]; //每趟将a[i]插入到前面的排序子序列中 int j; for(j=i-1;j>=