您的位置:首页 > 其它

选择排序(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;
}


转载请注明出处
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  选择排序