选择排序的思想:
选择排序是一种的最简单的排序方法和冒泡排序有些像(冒泡排序可以参考我的博文冒泡排序http://blog.csdn.net/len_yue_mo_fu/article/details/52160685),他的思想是通过不断的比较数组中未排序部分第一个元素和后面所有元素两个元素的大小,找出数组无序部分的最大值或者最小值,并且将该元素放在数组无序部分的最前面。第一次循环可以看成是整个数组无序 ,所以放数组第一个位置。
外循环每执行一次,就会将没有排序的的部分中最大或者最小的元素找出放在没有排序的部分第一个位置,内循环负责未排序部分第一个元素和后面所有相元素之间的比较。
选择排序代码:
#include <stdio.h>
#include<stdlib.h>
#include<time.h>
#define MAXLEN 100
//创建数组
void createArr(int arr[],int len)
{
int i=0;
srand((unsigned int)time(NULL));
for(i=0;i<len;i++)
{
arr[i]=rand()%MAXLEN;
}
return ;
}
//打印数组
void printArr(int arr[], int len)
{
int i=0;
for(i=0;i<len;i++)
{
printf("%d=%d\n",i+1,arr[i]);
}
return ;
}
//选择排序代码
void select_sort(int arr[],int len)
{
int i=0,j=0;
for(i=0;i<len;i++)//控制每次从数组哪个位置开始执行循环,第一次从第一个元素开始,之后每次向后移动一个元素
{
for(j=i+1;j<len;j++)//负责未排序部分第一个元素与后面元素之间的比较,不满足排序规则时交换两个元素
{
if(arr[j]<arr[i])
{
int tem=arr[i];
arr[i]=arr[j];
arr[j]=tem;
}
}
}
return ;
}
int main(void)
{
printf("Hello World!\n");
int arr[MAXLEN]={0};
createArr(arr,MAXLEN);
select_sort(arr,MAXLEN);
printArr(arr,MAXLEN);
return 0;
}
欢迎关注问我团队公众号: