/* 选择排序:依次取固定位置内容和其他成员顺序比较并交换内容,外圈循环 */
void SortSelect(int *arr, int cnt)
{
int i, j, tmp;
for (i = 0; i < cnt - 1; i++) {
for (j = i + 1; j < cnt; j++) {
if (arr[i] > arr[j]) {
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
}
return;
}
/* 冒泡排序:依次取内容和其他成员比较并交换,内圈循环 */
void SortBubblue(int *arr, int cnt)
{
int i, j, tmp;
for (i = 0; i < cnt - 1; i++) {
for (j = 0; j < cnt - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
return;
}
/* 插入排序:依次取最值成员插入左侧,每次插入相邻成员右移 */
void SortInsert(int *arr, int cnt)
{
int i, j, tmp;
for (i = 1; i < cnt; i++) {
tmp = arr[i];
for (j = i - 1; j >= 0 && arr[j] > tmp; j--)
arr[j + 1] = arr[j];
arr[j + 1] = tmp;
}
return;
}
void main(void)
{
int i, arr[] = {5,4,3,6,9,1,2,13,8};
int cnt = sizeof(arr) / sizeof(int);
SortSelect(arr, cnt);
SortBubblue(arr, cnt);
SortInsert(arr, cnt);
printf("Sort result: ");
for (i = 0; i < cnt; i++) {
if (i + 1 != cnt)
printf("%d, ", arr[i]);
else
printf("%d\n", arr[i]);
}
return;
}
C实现几种排序方式
于 2022-04-07 17:37:46 首次发布