选择排序 , 插入排序 , 冒泡排序
来源:互联网 发布:公司礼品 知乎 编辑:程序博客网 时间:2024/05/20 04:08
选择排序 SelectionSort
代码编写:
#include <stdio.h>void println(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 SelectionSort(int array[], int len) // O(n*n)//对数组进行选择排序,时间复杂度为O(n^2){ int i = 0; int j = 0; int k = -1; for(i=0; i<len; i++) { k = i; for(j=i+1; j<len; j++) { if( array[j] < array[k] ) { k = j; } } swap(array, i, k); }}int main(){ int array[] = {21, 25, 49, 25, 16, 8}; int len = sizeof(array) / sizeof(*array); println(array, len); SelectionSort(array, len); println(array, len); return 0;}
插入排序 InsertionSort
代码编写:
#include <stdio.h>void println(int array[], int len)//打印数组 { int i = 0; for(i=0; i<len; i++) { printf("%d ", array[i]); } printf("\n");}void InsertionSort(int array[], int len) // O(n*n)//插入排序算法,比较的次数少了一点{ 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--) //比temp大就后移一位 { array[j+1] = array[j]; k = j; } array[k] = temp; }}int main(){ int array[] = {21, 25, 49, 25, 16, 8}; int len = sizeof(array) / sizeof(*array); println(array, len); InertionSort(array, len); println(array, len); return 0;}
冒泡排序 BubbleSort
代码编写:
#include <stdio.h>void println(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 BubbleSort(int array[], int len) // O(n*n)//冒泡排序算法 { int i = 0; int j = 0; int exchange = 1; //exchange作用是标志一次循环中是否发生交换, //如果没有发生交换,则说明数组已经排好序,无需继续排了 for(i=0; (i<len) && exchange; i++) { exchange = 0; for(j=len-1; j>i; j--) { if(array[j] < array[j-1]) { swap(array, j, j-1); exchange = 1; } } }}int main(){ int array[] = {21, 25, 49, 25, 16, 8}; int len = sizeof(array) / sizeof(*array); println(array, len); BubbleSort(array, len); println(array, len); return 0;}
小结
选择排序,插入排序以及冒泡排序的算法思想简单,且算法的时间复杂度同为O(n2)量级。
这3种排序算法的排序结果都是稳定的。
0 0
- 冒泡选择插入排序
- 冒泡、选择、插入排序
- 选择、插入、冒泡排序
- 冒泡、插入、选择排序
- 选择、插入、冒泡排序
- 冒泡、选择、插入排序
- 选择、冒泡、插入-排序
- 插入 选择 冒泡 排序
- 选择、冒泡、插入排序
- 冒泡、选择、插入排序
- 冒泡,插入,选择排序
- 冒泡,选择,插入排序
- 冒泡、插入、选择排序
- 冒泡,插入,选择排序
- 冒泡,选择,插入排序
- 冒泡,选择,插入排序
- 选择排序,插入排序,冒泡排序
- 冒泡排序,选择排序,插入排序
- 前端性能优化——个人搜集总结
- 2016年个人书单
- Java开发者常犯的10个错误
- DxO OpticsPro 11.4.0.11979 Windows 简体中文 汉化版 送4部教程
- HDU3118-利用二进制状态和二分图的性质(好题)
- 选择排序 , 插入排序 , 冒泡排序
- MVC 后台代码 获取分布页内容 html 内容
- Unity预计算全局光照的学习(速度优化,LightProbe,LPPV)
- oracle一步一步学习(二)
- 形式名词 :つもり
- 当ScrowView嵌套listView加载完数据后列表自动滚动到最顶端的问题
- 8月4号--完善
- 【数论】计算组合数
- 新起点学习历程