排序算法之简单插入排序法

xiaoxiao2021-02-28  101

对于初学者来说,排序算法是C语言学习的一个重点和难点,我就来分享一下我的学习心得吧! 排序算法有3类:1、交换类排序法。包括冒泡排序和快速排序  2、插入类排序法。包括简单插入排序和希尔排序  3、选择类排序法。包括简单选择排序和堆排序 这一篇我先讲一讲简单插入排序法吧。 简单插入排序法:把n个待排序的元素看成一个有序表和一个无序表,开始时有序表只包含一个元素,无序表包含n-1个元素。排序过程中每次从无序表中取出第一个元素,把它与有序表进行比较后插入到有序表的适当位置,使之成为新的有序表。在最坏情况下,即初始序列是逆序的情况下,比较次数为n(n-1)/2,移动次数为n(n-1)/2. #include<stdio.h> void insort(int s[],int n) { int i,j; for(i=2;i<=n;i++) { 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(void) { int a[11],i; printf("请输入10个数据:\n"); for(i=1;i<11;i++) scanf("%d",&a[i]); printf("这10个数据的顺序是:\n"); for(i=1;i<11;i++) printf("]",a[i]); insort(a,10); printf("\n"); printf("排序后的数据的顺序是:\n"); for(i=1;i<11;i++) printf("]",a[i]); return 0; }
转载请注明原文地址: https://www.6miu.com/read-43088.html

最新回复(0)