#include <stdio.h>
#include <stdlib.h>
int a[7] = { 4,2,3,1,6,7,8 };
int b[7] = { 4,2,3,1,6,7,8 };
void bubble_sort(int* a, int len) // 优化版本的冒泡排序
{
for (int end = len - 1; end > 0; end--)
{
int sortIndex = 1;
for (int begin = 1; begin <= end; begin++)
{
if (a[begin] < a[begin - 1])
{
int b = a[begin];
a[begin] = a[begin - 1];
a[begin - 1] = b;
sortIndex = begin;
}
}
end = sortIndex;
}
for (int i = 0; i < len; i++)
{
printf("%d_", a[i]);
}
printf("\n");
}
void selset_sort(int* a, int len) // 选择排序,每一轮将最大数字与该轮的最后一个位置交换
{
for (int end = len - 1; end > 0; end--)
{
int maxindex = 0;
for (int begin = 1; begin <= end; begin++)
{
if (a[maxindex] <= a[begin])// 存在数字比 maxindex 那个数字大,则记录下标
{
maxindex = begin;
}
}
int temp = a[maxindex];
a[maxindex] = a[end];
a[end] = temp;
}
for (int i = 0; i < len; i++)
{
printf("%d_", a[i]);
}
}
int main(int argc, char** argv)
{
bubble_sort(a, sizeof(a) / sizeof(a[0]));
selset_sort(b, sizeof(b) / sizeof(b[0]));
return 1;
}
冒泡排序 (局部有序优化) 与 选择排序
于 2022-02-25 11:41:15 首次发布