几种内部排序算法

来源:互联网 发布:java websocket client 编辑:程序博客网 时间:2024/06/06 16:56

通常说的排序指:
①.内部排序算法(数据在内存中进行排序)
②.外部排序算法(数据大,需要访问外存)
这里写图片描述
这里写图片描述
我们把排序进行了划分,并计算出排序的时间复杂度,稳定性;下来逐个对排序算法实现,并归纳出排序的实现过程和思想。

插入类排序

插入类排序的思想:在一个已经排好序的有序序列内,对待排序的无序序列区中记录逐个进行处理,每一步将一个待排序的记录与同组那些已经排好序的记录进行比较,然后有序的插到该有序序列区中,直到将所有待排记录全部插入为止。(类似于打扑克牌)

直接插入排序

#include<stdio.h> int insertsort(int *L);int main(void){    int i;    int L[10] = {2,99,88,54,23,76,34,13,4,5};     insertsort(L);    for(i = 0;i < 10;i++)        printf("%d ",L[i]);    return 0;}int insertsort(int *L){    int i,j;    int K;  //用于保存待插入的数据     for(i = 1;i < 10;i++){  //  10个数据比较9次就行了         K = L[i];   //将待插入数据备份到 K 中         for(j = i-1;L[j] > K;j--)   //从后往前比较             L[j+1] = L[j];  //把大于 K 的都向后移一个位置         L[j+1] = K; //将 K 放到正确位置     }    return *L;}

可将待排序的数组分为两部分
[已排序区][待排序区]
[2][99,88,54,23,76,34,13,4,5]
然后依次在待排序区取出一个数据,与排序区比较,比待排数据大的,依次往后移一位,否则,这个位置就是要插入数据的位置。

0 0
原创粉丝点击