数据结构之基础排序(选择排序、插入排序、冒泡排序)
来源:互联网 发布:薰衣草精油淘宝 编辑:程序博客网 时间:2024/05/16 06:57
排序在代码中用的非常普遍,所以今天我们来学下最基础的三种排序,
如果你已经烂熟于心,请跳过本文。
注:我的代码一般没有注释,我觉得没啥必要,都是基础挺简单的。
#include <stdio.h>#include <stdlib.h>void print(int array[], int len){ int i = 0; for (i = 0; i < len; i++) { printf("%d ", array[i]); } printf("\n");}void swap(int array[], int i, int j){ int temp = array[i]; array[i] = array[j]; array[j] = temp;}void SelectSort(int array[], int len){ int i = 0; int j = 0; int k = -1; for (i = 0; i < len; i++) { k = i; for (j = i; j < len; j++) { if (array[j] < array[k]) { swap(array, j, k); } } }}void InsertSort(int array[], int len){ int i = 0; int j = 0; int k = -1; int temp = -1; for (i = 1; i < len; i++) { k = i; temp = array[k]; for (j = i - 1; (j >= 0) && (array[j] > temp); j--) { array[j + 1] = array[j]; k = j; } array[k] = temp; } }void BubbleSort(int array[], int len){ int i = 0; int j = 0; int exchange = 1; for (i = 0; (i < len) && exchange; i++) { exchange = 0; for (j = i + 1; j < len; j++) { if (array[i] > array[j]) { swap(array, i, j); exchange = 1; } } } }int main(int argc, char *argv[]){ int a[] = {22,44,33,88,66,11}; int len = sizeof(a) / sizeof(int); print(a, len); //SelectSort(a, len); InsertSort(a, len); //BubbleSort(a, len); print(a, len); system("PAUSE"); return 0;}不管是选择排序还是插入排序还是冒泡排序,时间复杂度都是O(n^2),
在一些对算法要求比较高的场合,就不是很适用,所以,后面我会继续写一些高效率的排序算法。
0 0
- 数据结构之基础排序(选择排序、插入排序、冒泡排序)
- [数据结构] 冒泡排序,插入排序,选择排序
- 基础排序算法(冒泡排序、选择排序、插入排序)
- 基础排序总结(冒泡排序、选择排序、插入排序)
- java基础------》数据结构---》交换排序(冒泡排序,快速排序),选择排序,系统排序,插入排序
- Java基础篇之----排序(快速排序、冒泡排序、堆排序、简单选择排序、 希尔排序、直接插入排序)
- Javascript数据结构算法之排序一(冒泡排序,插入排序,选择排序)
- 数据结构与算法之基础排序(冒泡/插入/选择)<十>
- 排序算法---基础算法(冒泡排序,快速排序,选择排序,直接插入排序,桶排序)
- 算法与数据结构基础(三)插入排序、选择排序和冒泡排序的区别
- 数据结构基础7.1:简单排序(冒泡、选择、插入)
- 基础排序:冒泡排序、选择排序、插入排序
- 排序之冒泡排序、选择排序、插入排序
- 排序 之 选择排序,插入排序,冒泡排序
- 排序算法之“选择排序-冒泡排序-插入排序”
- 简单排序之冒泡排序,选择排序,插入排序
- (九)数据结构之简单排序算法实现:冒泡排序、插入排序和选择排序
- 排序之----冒泡,直接插入,选择排序
- 互联网界产品经理和项目经理
- POJ 1410 Intersection(线段相交&&判断点在矩形内&&坑爹)
- 小贝独自带小七公园遛弯儿父女对坐温馨
- Java中的HashCode(2)之Hashset造成的内存泄露
- 设置安卓开机动画、开机logo
- 数据结构之基础排序(选择排序、插入排序、冒泡排序)
- linux--命令--lsof 工具介绍
- Git的使用
- android中通过本地service处理事务和通过新开线程处理事务的区别
- Qt捕捉窗口关闭事件与信号的捕捉
- 程序在编译时候,你会做什么
- NSRange 用法
- 编译android源码中的资源文件
- 调用设备闪光灯