目录
题目
问题分析
选择排序法
冒泡排序法
代码
选择排序法
冒泡排序法
运行结果
题目
给10个数排序
问题分析
选择排序法
从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。 每一趟可以确定一个元素的最终位置,经过n-1趟排序就可以使整个排序表有序。
冒泡排序法
从后往前(或从前往后)两两比较相邻元素的值,若为逆序,则交换他们,直到序列比较完。这是一趟冒泡,结果是将最小的元素交换到待排序列的第一个位置(或者将最大的元素交换到待排序列的最后一个位置)。下一趟冒泡时,前一趟确定的最小元素不再参与比较,每趟冒泡的结果是把序列中最小元素(或最大元素)放到了序列的最终位置。最多做n-1趟冒泡就能把所有的元素排好序。
代码
选择排序法
#include<stdio.h>
//选择排序
int main()
{
int i,j,tep;
int arr[10] = { 0 };
int sz = sizeof(arr) / sizeof(arr[0]);//元素个数
printf("请输入10个数:\n");
for ( i = 0;i < 10;i++)
{
scanf_s("%d", &arr[i]);
}
printf("从小到大顺序为:\n");
for (i = 0;i < sz - 1;i++)//一共进行n-1趟
{
for (j = i + 1;j < sz;j++)
{
if (arr[i] > arr[j])
{
tep = arr[i];
arr[i] = arr[j];
arr[j] = tep;
}
}
}
for (i = 0;i < 10;i++)
{
printf(" %d ", arr[i]);
}
printf("\n");
return 0;
}
冒泡排序法
#include<stdio.h>
//冒泡排序
int main()
{
int i, j, tep;
int arr[10] = { 0 };
int sz = sizeof(arr) / sizeof(arr[0]);//元素个数
printf("请输入%d个数:\n",sz);
for (i = 0;i < sz;i++)
{
scanf_s("%d", &arr[i]);
}
printf("从小到大顺序为:\n");
for (i = 0;i < sz - 1;i++)
{
for (j = sz - 1;j > i;j--)//一趟冒泡过程
{
if (arr[j-1] > arr[j])//若为逆序
{
tep = arr[j-1]; //交换
arr[j-1] = arr[j];
arr[j] = tep;
}
}
}
for (i = 0;i < sz;i++)
{
printf(" %d ", arr[i]);
}
printf("\n");
return 0;
}
运行结果
![](https://img-blog.csdnimg.cn/78763ab75c2d4017be7763ba6f82e01d.png)
![](https://img-blog.csdnimg.cn/681f3c797d41448bada23d48288d7340.png)