数据结构之冒泡排序与插入排序的思想与实现
2009-10-21 22:19
148 查看
经典的排序算法有很多种,有的时间复杂度也各不一样。《代码之美》一书的第三章《我从未编写过的最漂亮的代码》还对快速排序代码进行优化精讲,挺优美。这书不错。这次主要来自己动手实现这简单的冒泡排序与插入排序,加深熟练程度。
(一)冒泡排序
基本思想:依次比较相邻的两个数,将小数放在前面,大数放在后面。由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。主要通过两层循环来实现。
时间复杂度为:O(n∧2)
代码实现:
代码
1 /// <summary>
2 /// 选择排序
3 /// </summary>
4 /// <param name="array"></param>
5 private void SelectSort(int[] array)
6 {
7 int tmp;//暂存要交换的数据
8 int t;//交换数据的位置
9 for (int i = 0; i < arr.Length; i++)
10 {
11 t = i;
12 for (int j = i+1; j < arr.Length; j++)
13 {
14 if (arr[j] < arr[t])
15 {
16 t = j;
17 }
18 }
19 tmp = arr[i];
20 arr[i] = arr[t];
21 arr[t] = tmp;
22 }
23 }
(一)冒泡排序
基本思想:依次比较相邻的两个数,将小数放在前面,大数放在后面。由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。主要通过两层循环来实现。
时间复杂度为:O(n∧2)
代码实现:
代码
1 /// <summary>
2 /// 选择排序
3 /// </summary>
4 /// <param name="array"></param>
5 private void SelectSort(int[] array)
6 {
7 int tmp;//暂存要交换的数据
8 int t;//交换数据的位置
9 for (int i = 0; i < arr.Length; i++)
10 {
11 t = i;
12 for (int j = i+1; j < arr.Length; j++)
13 {
14 if (arr[j] < arr[t])
15 {
16 t = j;
17 }
18 }
19 tmp = arr[i];
20 arr[i] = arr[t];
21 arr[t] = tmp;
22 }
23 }
相关文章推荐
- 数据结构基础 之 二叉搜索树的思想与实现
- 数据结构之循环队列(面向对象思想c++实现)
- 数据结构基础 之 单链表 各类操作、思想与实现
- 数据结构之---C语言实现冒泡排序
- [置顶] 【javascript 数据结构与算法】javascript实现冒泡排序
- 数据结构之二分法查找、快速排序思想与实现
- 数据结构模版----单链表SimpleLinkList[带头结点&&面向对象设计思想](C语言实现)
- 数据结构与算法(8)---Java语言实现:插入排序
- 数据结构之插入排序的Java实现
- [C++]数据结构:排序算法Part1----冒泡排序、选择排序、插入排序、堆排序
- 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)
- 数据结构基础 之 树与二叉树 各类操作、思想与实现
- 数据结构之冒泡排序与插入排序的思想与实现
- 数据结构基础 之 双链表 与 循环链表 各类操作、思想与实现
- 数据结构之二分法查找、快速排序思想与实现
- 数据结构复习之–“冒泡排序”-JAVA实现
- 数据结构与算法:C++实现插入排序
- [C++]数据结构:排序算法Part1----冒泡排序、选择排序、插入排序、堆排序
- 数据结构之--冒泡排序的三种实现
- 【数据结构与算法】【排序】冒泡排序的代码实现