今天复习了三种排序方法,冒泡排序、选择排序、桶排序,感觉好长时间没写都忘差不多了
接下来开始学数据结构
1.冒泡排序
冒泡排序两个两个交换,进行n-1轮
#include <stdio.h>
int main(int argc, char const *argv[])
{
// 8 100 50 22 15 6 1 1000 999 0
//从小到大排序
int nums[10] = {8, 100, 50, 22, 15, 6, 1, 1000, 999, 0};
int temp;
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10 - i; j++)
{
if (nums[j] > nums[j + 1])
{
temp = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = temp;
}
}
}
for (int i = 0; i < 10; i++)
{
printf("%d ", nums[i]);
}
getchar();
getchar();
return 0;
}
2.选择排序
选择排序每次确定一个位置的值,进行n-1轮
#include <stdio.h>
int main(int argc, char const *argv[])
{
// 8 100 50 22 15 6 1 1000 999 0
int nums[10] = {8, 100, 50, 22, 15, 6, 1, 1000, 999, 0};
int temp;
for (int i = 0; i < 9; i++)
{
for (int j = i + 1; j < 10; j++)
{
if (nums[i] > nums[j])
{
temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
printf("%d ", nums[i]);
}
for (int i = 0; i < 10; i++)
{
printf("%d ", nums[i]);
}
getchar();
getchar();
return 0;
}
3.桶排序
这是简单版的桶排序
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n, m;
int num[10];
// 注意必须初始化不然会有随机值,会影响结果 特别注意!!!!!!!
for (int i = 0; i <= 10; i++)
{
num[i] = 0;
}
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%d", &m);
num[m]++;
}
for (int i = 0; i <= 10; i++)
{
for (int j = 0; j < num[i]; j++)
{
printf("%d ", i);
}
}
system("pause");
return 0;
}