C语言实现选择排序、直接插入排序、冒泡排序的示例
选择排序
选择排序是一种简单直观的排序算法,其核心思想是:遍历数组,从未排序的序列中找到最小元素,将其放到已排序序列的末尾。
时间复杂度:O(n^2)
稳定性 :不稳定
/* * @brief selection sort */ void selection_sort(int a[], int n) { int i, j, min, tmp; for (i = 0; i < n - 1; ++i) { min = i; for (j = i+1; j < n; ++j) { if (a[j] < a[min]) { min = j; } } if (min != i) { tmp = a[min]; a[min] = a[i]; a[i] = tmp; } } }
直接插入排序
直接插入排序是一种比较容易理解的排序算法,其核心思想是遍历数组,将数组中的元素逐个插入到已排序序列中。
时间复杂度:O(n^2)
稳定性:稳定
实现:
/* @brief insetion sort * insert the new element to the sorted subarray */ void insertion_sort(int a[], int n) { int i, j, num; for (i = 1; i < n; ++i) { num = a[i]; for (j = i - 1; j >= 0 && a[j] > num; --j) a[j+1] = a[j]; a[j+1] = num; } }
冒泡排序
冒泡排序是最基本的排序算法之一,其核心思想是从后向前遍历数组,比较a[i]和a[i-1],如果a[i]比a[i-1]小,则将两者交换。这样一次遍历之后,最小的元素位于数组最前,再对除最小元素外的子数组进行遍历。进行n次(n数组元素个数)遍历后即排好序。外层循环为n次,内层循环分别为n-1, n-2…1次。
时间复杂度: O(n^2)
稳定性:稳定
实现:
/* @brief bubble sort * move the smallest element to the front in every single loop */ void bubble_sort(int a[], int n) { int i, j, tmp; for (i = 0; i < n; ++i) { for (j = n - 1; j > i; --j) { if (a[j] < a[j-1]) { tmp = a[j]; a[j] = a[j-1]; a[j-1] = tmp; } } } }
上一篇:Windows系统下使用C语言编写单线程的文件备份程序
栏 目:C语言
下一篇:在C语言编程中使用变量的基础教程
本文地址:https://www.xiuzhanwang.com/a1/Cyuyan/2486.html
您可能感兴趣的文章
- 04-02c语言函数调用后清空内存 c语言调用函数删除字符
- 04-02c语言的正则匹配函数 c语言正则表达式函数库
- 04-02func函数+在C语言 func函数在c语言中
- 04-02c语言中对数函数的表达式 c语言中对数怎么表达
- 04-02c语言用函数写分段 用c语言表示分段函数
- 04-02c语言编写函数冒泡排序 c语言冒泡排序法函数
- 04-02c语言没有round函数 round c语言
- 04-02c语言分段函数怎么求 用c语言求分段函数
- 04-02C语言中怎么打出三角函数 c语言中怎么打出三角函数的值
- 04-02c语言调用函数求fibo C语言调用函数求阶乘
阅读排行
本栏相关
- 04-02c语言函数调用后清空内存 c语言调用
- 04-02func函数+在C语言 func函数在c语言中
- 04-02c语言的正则匹配函数 c语言正则表达
- 04-02c语言用函数写分段 用c语言表示分段
- 04-02c语言中对数函数的表达式 c语言中对
- 04-02c语言编写函数冒泡排序 c语言冒泡排
- 04-02c语言没有round函数 round c语言
- 04-02c语言分段函数怎么求 用c语言求分段
- 04-02C语言中怎么打出三角函数 c语言中怎
- 04-02c语言调用函数求fibo C语言调用函数求
随机阅读
- 08-05DEDE织梦data目录下的sessions文件夹有什
- 01-10SublimeText编译C开发环境设置
- 08-05织梦dedecms什么时候用栏目交叉功能?
- 01-10使用C语言求解扑克牌的顺子及n个骰子
- 01-10C#中split用法实例总结
- 08-05dedecms(织梦)副栏目数量限制代码修改
- 01-11Mac OSX 打开原生自带读写NTFS功能(图文
- 01-11ajax实现页面的局部加载
- 04-02jquery与jsp,用jquery
- 01-10delphi制作wav文件的方法