选择排序和冒泡排序的代码
#include <stdio.h>
void bubble_sort(int arr[], int sz)//冒泡排序
{
int i = 0, j = 0;
for (i = 0; i < sz - 1; i++)
{
for (j = 0; j < sz - 1 - i; j++)
{
if (arr[j] > arr[j + 1])
{
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
}
void selection_sort(int arr[], int sz)//选择排序
{
int i = 0, j = 0, index = 0;//index是后面元素的最小值的下标
for (i = 0; i < sz - 1; i++)
{
index = i;//假设i的位置就是最小值
for (j = i + 1; j < sz; j++)
{
if (arr[j] < arr[index])
{
index = j;
}
}//出了循环,index一定是最小值的下标
int tmp = arr[i];
arr[i] = arr[index];
arr[index] = tmp;//让最小值和当前值交换,确保前面的是最小的
}
}
void print(int arr[], int sz)//打印整个一维数组
{
for (int i = 0; i < sz; i++)
printf("%d ", arr[i]);
printf("\n");
}
int main()
{
int arr1[] = { 10,9,8,7,6,5,4,3,2,1 };
int sz1 = sizeof(arr1) / sizeof(arr1[0]);
print(arr1, sz1);
bubble_sort(arr1, sz1);
print(arr1, sz1);
printf("\n");
int arr2[] = { 10,9,8,7,6,5,4,3,2,1,0 };
int sz2 = sizeof(arr2) / sizeof(arr2[0]);
print(arr2, sz2);
selection_sort(arr2, sz2);
print(arr2, sz2);
return 0;
}
