首先介绍一下什么是选择排序:
选择排序法 是对 定位比较交换法(也就是冒泡排序法) 的一种改进。选择排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键 字最小的记录作为有序序列中第i个记录。基于此思想的算法主要有简单选择排序、树型选择排序和堆排序。简单选择排序的基本思想:第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换;第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它
与r[2]交换;以此类推,第i趟在待排序记录r[i]~r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。
以下是我将我的冒泡排序修改了一下:#include <stdio.h>
void swap(int *a,int *b)
{
int c;
c = *a;
*a = *b;
*b = c;
}
int main()
{
int str[]={2, 5, 6, 11, 4, 7, 8, 55, 0, 3};
int i;
int j;
int len;·
len =sizeof(str)/sizeof(str[0]);
int str1[len];
for(i=0; i<len; i++)
{
printf("%3d",str[i]);
}
printf("\n");
for(i=0; i<len; i++)
{
for(j=0;j<len-i-1;j++)
{
if(str[j] > str[j+1])
{
swap(&str[j],&str[j+1]);
}
}
str1[i] = str[j];
}
for(i=0; i<len; i++)
{
printf("%3d",str[i]);
}
printf("\n");
for(i=0; i<len; i++)
{
printf("%3d",str1[i]);
}
printf("\n");return 0;
}运行结果如下:[lalala@jjjjj ~]$ ./paixv2 5 6 11 4 7 8 55 0 3 0 2 3 4 5 6 7 8 11 55 55 11 8 7 6 5 4 3 2 0我是将选择出来的最大的元素放进了一个新的数组里;创建了一个新的递减的序列;