1、选择排序原理
利用for循环,将n-1个元素与第一个元素相比,进行大小调换,然后n-2个元素与第二个元素相比,进行大小调换……直到最后1个元素与倒数第二个元素相比
2、普通的选择排序算法
(1)根据输入的字符串首字母大小进行排序(按照ASCII的排序)
#define NUM 1001
int main()
{
char Value[NUM] = { 0 };//字符数组存储字符
scanf("%s", Value);//输入数据
int SIZE = strlen(Value);//计算数组大小
int i = 0, j = 0;//循环数
int number = 0;//中间值
for (i = 0; i < SIZE - 1; i++)
{
for (j = i + 1; j < SIZE; j++)
{
if (Value[i] > Value[j])
{
number = Value[i];
Value[i] = Value[j];
Value[j] = number;
}
}
}
printf("%s\n", Value);
return 0;
}
(2)对十个整数选择排序
int main()
{
int Value[NUM] = { 0 };
int x = 0;
int SIZE = sizeof(Value) / sizeof(Value[0]);//计算数组大小
int i = 0, j = 0;// 循环数
int number = 0;//中间值
for (x = 0; x < NUM; x++)
{
scanf("%d", &Value[x]);//输入数据
}
for (i = 0; i < SIZE - 1; i++)
{
for (j = i + 1; j < SIZE; j++)
{
if (Value[i] > Value[j])
{
number = Value[i];
Value[i] = Value[j];
Value[j] = number;
}
}
}
for (x = 0; x < NUM; x++)
{
printf("%d ", Value[x]);
}
return 0;
}
3、官方库里的选择排序算法
(1)qsort函数的头文件为<stdlib.h>,是一个库函数。
void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))
- base – 指向要排序的数组的第一个元素的指针。
- nitems – 由 base 指向的数组中元素的个数。
- size – 数组中每个元素的大小,以字节为单位。
- compar – 用来比较两个元素的函数。
(2)对int数组选择排序
#include <stdio.h>
#include <stdlib.h>
int values[] = { 88, 56, 100, 2, 25 };
int cmpfunc (const void * a, const void * b)
{
return ( *(int*)a - *(int*)b );
}
int main()
{
int n;
printf("排序之前的列表:\n");
for( n = 0 ; n < 5; n++ )
{
printf("%d ", values[n]);
}
qsort(values, 5, sizeof(int), cmpfunc);
printf("\n排序之后的列表:\n");
for( n = 0 ; n < 5; n++ )
{
printf("%d ", values[n]);
}
return 0;
}
除此以外还有:可以点击这里查看