**选择排序**
一,综述
选择排序(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;
}
转载请注明出处