选择排序:O(n^2)
思想:
在冒泡的基础上作出的改进,不用每次都去交换,之和最小或者最大的下标交换,将其放入对应位置
具体代码
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
void swap(long *A,long *B){
long tmp;
tmp = *A;
*A = *B;
*B = tmp;
}
void genrand(int len,long *array){
int i=0;
if(len>1000)
return;
srand((unsigned int)time(0));
for(i=0;i<len;i++)
array[i]=rand();
}
void selectSort(long * array ,int length){
if(array==NULL || length <=0)
return;
int i,j,max;
for(i=0;i<length;i++){
max = i;
for(j=i;j<length;j++){
if(array[j]>array[max])
max = j;
}
swap(&array[i],&array[max]);
}
}
int main(int argc, char * argv){
int i,num = 10;
long * array = (long *)malloc(sizeof(long )*num);
genrand(num,array);
selectSort(array,num);
for(i=0;i<num;i++){
printf("%ld\n",array[i]);
}
}
编译环境:ubunu14.04,vim,gcc