排序算法二——选择排序
来源:互联网 发布:mac恢复垃圾箱删除文件 编辑:程序博客网 时间:2024/05/21 05:18
**
排序算法二:选择排序
**
**跟冒泡一样,选择排序同样是最简单,最常用的排序方法之一。
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)
所以,选择排序是不稳定的排序。平均时间复杂度O(n^2)。**
选择排序代码:
/***************************************************** File name:xuan_ze.c Author: Tang Zhiqian Date:2017-08-07 16:37*****************************************************//* 选择排序*/#include <stdio.h>#define MAX 10void swap(int arr[],int i,int j);void print(int arr[]);int main(){ int arr[MAX] = {9,1,2,3,4,5,6,7,8,0}; int i,j,min; printf("排序前:\n"); for (i = 0; i < MAX; i++) { printf("%d ",arr[i]); } printf("\n"); printf("选择排序后:\n"); for (i = 0; i < MAX - 1; i++) { min = i; //设min为第一个数的下标 for (j = i + 1; j < MAX; j++) { if (arr[j] < arr[min]) { min = j; } } if (i != min) //判断,如果最小值还是i,则不需要swap { swap(arr,i,min); print(arr); } }// print(arr); return 0;}void swap(int arr[],int i,int j){ int temp; temp = arr[i]; arr[i] = arr[j]; arr[j] = temp;}void print(int arr[]){ int i; for (i = 0; i < MAX; i++) { printf("%d ",arr[i]); } printf("\n");}
程序运行结果:
很简单,自己看!
阅读全文
0 0
- 排序算法二——选择排序
- 排序算法—选择排序
- C#排序算法(二)——选择排序
- 排序算法(二)——选择排序及改进
- 排序算法自我练习(二)——选择排序
- 排序算法(二)——选择排序及改进
- 排序算法(二)——选择排序及改进
- 排序算法《二》选择排序
- 排序算法二:选择排序
- 排序算法二:选择排序
- 排序算法(二):选择排序
- 排序算法(二)-选择排序
- 排序算法之选择排序——简单选择排序
- 数据结构&算法实践—【排序|选择排序】选择排序
- 排序算法1—插入排序、选择排序、冒泡排序
- 排序算法之——选择排序
- 排序算法——选择排序
- 排序算法——选择排序
- java学习String
- 自适应
- vue和react的比较
- jsp九大内置对象
- struts2重点、精华、用法总结(二):接受请求参数及页面跳转类型
- 排序算法二——选择排序
- 良好的用户体验都有哪些特点?
- hdu6078 wave sequence dp
- Linux Git Github 连接
- shell 运行
- Hexo搭建独立博客并托管到Github和Coding上
- 【拓扑排序】基础
- RYU的REST API 获取拓扑发现结果
- 啥是广点通