C++基础的排序算法
冒泡排序
- 现在输入 10 个用户的有效学习时间,要求对它们按由小到大的顺序排序。
解题思路:这种问题是一个典型的排序问题,排序方法是一种重要且基本的算法,我们在此使用“冒泡排序法”,其思路为:每次将相邻两个数比较,将小的调到前面,如果有 6 个数:8,7,5,4,2,0。第一次先将最前面的两个数 8 和 7 对调(看下图)。第二次将第二个数和第三个数(8 和 5)对调。如此总计进行了 5 次,得到 7-5-4-2-0-8 的顺序,可以看到:最大的数 8 已经沉底,成为最下面的一个数,而小的数上升。经过第一轮(5 次比较)后,得到了最大的数 8。
冒泡排序图解:
#include <iostream>
using namespace std;
void swap(int &a, int &b)
{
int temp;
temp = a;
a = b;
b = temp;
}
int main() {
int arr[6] = { 0 };
int len = sizeof(arr) / sizeof(int);
for (int i = 0; i < len; i++) {
cin >> arr[i];
}
// write your code here......
for (int i = 0; i < len-1; i++)
{
for (int j = 0; j < len-i-1; j++)
{
if (arr[j]>arr[j+1])
{
swap(arr[j], arr[j+1]);
}
}
}
for (int i = 0; i < len; i++)
{
cout << arr[i] << " ";
}
return 0;
}
核心代码:
for (int i = 0; i < len-1; i++)
{
for (int j = 0; j < len-i-1; j++)
{
if (arr[j]>arr[j+1])
{
swap(arr[j], arr[j+1]);
}
}
}
for 循环的书写方法 左开右闭 几个数就是几
//for (int q = 0; q < 10; q++) //十个数 第二个Q后面是10
C语言有现成的快速排序算法
使用的是头文件 stdlib.h
用法:
void qsort(void* base,size_t num,size_t width,int(__cdecl*compare)(const void*,const void*));
选择排序
选择排序思路,假定一个最小或最大值,根据题意这里假定一个最小值等于arr[0]
调用i后的数组元素的值和假定最小值比较,比最小值还小,互相交换
一轮循环比对过后把最小值赋值给当前i对应的元素,(比如,当前i==0,那么arr[0]=min,如果当前i==1,那么arr[1]=min,这个min就是第二小的值,以此类推得到一个从小到大排序的数组)
i的值++,重复进行比较,重写交换和赋值,直到完成
例题:
#include <iostream>
using namespace std;
void swap(int &a, int &b)
{
int temp;
temp = a;
a = b;
b = temp;
}
int main() {
int arr[6] = { 0 };
int len = sizeof(arr) / sizeof(int);
for (int i = 0; i < len; i++) {
cin >> arr[i];
}
// write your code here......
for (int i = 0; i < len; i++)
{
int min = arr[i];
for (int j = i+1; j < len; j++)
{
if (min>arr[j])
{
swap(min, arr[j]);
}
}
arr[i] = min;
}
for (int i = 0; i < len; i++)
{
cout << arr[i] << " ";
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程