三大基本排序

今天将三大基本排序算法(插入,选择,交换)代码敲了一遍,分享给大家,希望有用(#^.^#)

语言实现:C语言

工具:sublime

1.插入排序

原理,从数组中的元素从第二个开始,与之前的所有元素进行比较,插入到合适的位置,如下图


时间复杂度:第一次最多只需要与前面一个元素进行比较,第二次最多只需要与前面两个元素进行比较,以此类推,共需要基本操作1+2+3+...+n次,时间复杂度为O(n^1/2)

代码实现:




扫描二维码关注公众号,回复: 2537751 查看本文章

2.选择排序

原理:一组数据中,从数据中选择最小的一个作为数组第一个元素,第二小的作为第二个元素,以此类推,如下图


时间复杂度:第一次需要在n个元素中选择(则比较n-1次),第二次在n-1个元素中选择(则比较n-2次),总的操作次数为n-1 + n-2 + n-3 + ... + 2 + 1次,故时间复杂度为O(n^2/2)

代码实现:




3.交换排序(冒泡排序)

原理:将相邻两个元素进行比较,小的元素在前,一直交换,直至排序完成,如下图


时间复杂度:每轮都需要全部作比较,则比较次数之和为:n-1 + n-2 + ... + 2 + 1,故时间复杂度为O(n^2/2)

代码实现:




注:上述程序都为从小到大排序,且时间复杂度都是按照最差(即完全逆序)分析

       如果程序或分析有错误之处,还希望大家指出~


猜你喜欢

转载自blog.csdn.net/szy2333/article/details/80044326