选择排序(C语言版)
来源:互联网 发布:淘宝联盟返利时间 编辑:程序博客网 时间:2024/05/22 08:10
先说说选择排序的思想:
每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
稳定性和复杂度:
选择排序是不稳定的排序算法,时间复杂度最坏为O(n2),平均为O(n2),空间复杂度为O(1).
下面是我用C语言实现的选择排序的源代码,如果有什么不对的地方,请各位指出,谢谢。
#include <stdio.h>#include <stdlib.h>#include <assert.h>void selectSort(int array[], int size);void swap(int *value1, int *value2);void printArray(int *array, int size);int main(int argc, char const *argv[]){ int size = 0; scanf("%d", &size); assert(size > 0); int *array = (int *)calloc(size, sizeof(int)); int i = 0; for (i = 0; i < size; ++i) { scanf("%d", &array[i]); } selectSort(array, size); printArray(array, size); free(array); return 0;}void selectSort(int array[], int size){ assert(array != NULL && size > 0); int minIndex = 0; int i = 0; int j = 0; for (i = 0; i < size; ++i) { minIndex = i; for (j = i + 1; j < size; ++j) { if (array[j] < array[minIndex]) { minIndex = j; } } swap(&array[i], &array[minIndex]); }}void swap(int *value1, int *value2){ int tempValue; tempValue = *value1; *value1 = *value2; *value2 = tempValue;}void printArray(int *array, int size){ assert(array != NULL && size > 0); int i = 0; for (i = 0; i < size; ++i) { printf("%d ", array[i]); } printf("\n");}
其他八种排序算法的博客:
常见的9种内部排序(C语言实现)
0 0
- 选择排序(C语言版)
- C语言版冒泡排序及选择排序
- C语言版冒泡排序及选择排序
- 数据结构c语言版之简单选择排序
- 常用算法之:选择排序(C语言版)
- 数据结构与算法(C语言版)__选择排序
- 排序算法 C语言版
- 快速排序C语言版
- 归并排序 --- C语言版
- 快速排序C语言版
- 归并排序C语言版
- 归并排序(C语言版)
- 希尔排序(C语言版)
- 计数排序(C语言版)
- 堆排序(C语言版)
- 希尔排序c语言版
- 快速排序C语言版
- 冒泡排序 C语言版
- 一点想法
- 面试题10:二进制中1的个数
- 【网络爬虫】【java】微博爬虫(五):防止爬虫被墙的几个技巧(总结篇)
- 黑马程序员——Java集合框架—Queue—BlockingQueue—SynchronousQueue
- php中&&、and 区别
- 选择排序(C语言版)
- 软件测试的起点和源泉——七种测试驱动模式(方法论)
- Servlet生命周期与工作原理
- cocos2dx 2.x到cocos2dx 3.x的一些改变
- /etc/resolv.conf中关键字search和domain的作用
- 【Struts2学习笔记(3)】为Action的属性注入值
- BZOJ 1878 SDOI 2009 HH的项链 树状数组 + 离线处理
- (转载)数据结构-栈
- 汇编dos系统调用(输入输出篇)