选择排序(select sort)
2015-07-01 23:40
253 查看
**选择排序**
一,综述
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法.
二,排序思想
排序的时候一般分为两个区域. 有序去arr[0…i]和待排序区 arr[i+1…n-1]
每趟循环比较是arr[i+1]依次和arr[i+2],arr[i+3]……arr[n-1]比较,如果比arr[i+1]小,则进行交换. 每次比较有序区将增加一个元素. n个元素的选择排序需要n-1趟比较
三,排序图示
假设四个元素{2,8,4,0}的选择排序,按照上面的排序思想图示如下:
四, C语言实现选择排序,代码如下
#include "stdafx.h" #include<stdio.h> /* 选择排序 */ void selectsort(int *p, int len){ int temp = 0; for(int i=0; i<len; i++){ //第二层循环,每次都和索引i进行比较 for(int j=i+1; j<len; j++){ if(*(p+i) > *(p+j)){ temp = *(p+i); *(p+i) = *(p+j); *(p+j) = temp; } } } } void printarray(int *p, int len){ for(int i=0; i<len; i++){ printf("%d\n",*(p+i)); } } int main(int argc, char* argv[]) { int arr[4] = {2,8,4,0}; printf("befor select sort \n"); printarray(arr,sizeof(arr)/sizeof(int)); printf("after select sort\n"); selectsort(arr,sizeof(arr)/sizeof(int)); printarray(arr,sizeof(arr)/sizeof(int)); return 0; }
转载请注明出处
相关文章推荐
- Java数据结构及算法实例:选择排序 Selection Sort
- Java中的数组排序方式(快速排序、冒泡排序、选择排序)
- PHP简单选择排序算法实例
- VC++实现选择排序算法简单示例
- java实现选择排序算法
- Java排序算法总结之选择排序
- Python选择排序、冒泡排序、合并排序代码实例
- 用php实现选择排序的解决方法
- python选择排序算法的实现代码
- 选择排序
- 使用Java完成《算法导论》习题2.2-2
- 三种最简单基础的排序 选择排序 冒泡排序 直接插入排序 运用了函数指针数组
- C语言---选择排序
- 排序算法--选择排序(简单选择排序、堆排序)java实现
- 排序算法二:选择排序
- 排序算法C++实现(1)
- 选择、冒泡、插入-排序
- xcode-C语言出接触_选择排序
- 黑马程序员----Java中几种常用排序算法(选择排序、冒泡排序、快速排序)
- 简单排序java实现