什么是排序
所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。排序算法,就是如何使得记录按照要求排列的方法。
排序算法的评价标准
(1)时间复杂度(2)空间复杂度(3)排序方式(4)稳定性
废话不多说,我们直接开始吧
选择排序
选择排序(Selection sort)是一种比较简单的排序方式,工作原理是:从待排序的数据中找到,最小(或最大)的数据,将其放在第一个位置;再从剩下的待排序的数据中找到最小(或最大)的数据,将其放在这些数据的第一个位置;直到待排序的数据为零。
原理比较简单,这里就不过多描述,直接附上代码:
#include <iostream>
#define int long long
signed main() {
int n,min;
std::cin>>n;
int a[n + 1];
for(int i = 1;i <= n;i ++){//读入要排序的数据
std::cin>>a[i];
}
for(int i = 1;i < n;i ++){
min = i;
for(int j = i + 1;j <= n;j ++){//遍历一次a[i]后面的数,找到最小值
if(a[j] < a[min]){
min = j;
}
}
//将本次找到的最小值与a[i]交换
int t = a[i];
a[i] = a[min];
a[min] = t;
}
for(int i = 1;i <= n;i ++){//遍历输出
std::cout<<a[i]<<" ";
}
return 0;
}
冒泡排序
冒泡排序(Bubble Sort)也是比较基础简单的排序,工作原理就是从第一个位置开始,依次比较两个相邻的元素,如果它们的顺序是错误的,就交换过来,直到没有相邻的元素需要交换,就像气泡慢慢上浮,就像冒泡一样。
原理也比较简单,上代码
#include <iostream>
#define int long long
signed main() {
int n;
std::cin>>n;
int a[n + 1];
for(int i = 1;i <= n;i ++){
std::cin>>a[i];
}
for(int i = 1;i < n;i ++){
for(int j = 1;j <= n - i;j ++){
if(a[j] > a[j + 1]){//如果相邻元素的顺序不对,进行交换
int t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}
}
for(int i = 1;i <= n;i ++){//遍历输出
std::cout<<a[i]<<" ";
}
return 0;
}
插入排序
插入排序(Insertion sort)插入排序是一种简单的排序方法,基本思想是将一个元素插入到一个有序的数据中,从而一个新的,长度增加1的数据,从第二个元素开始,在当前元素位置前面的有序数据中寻找合适的位置(即第i个数据比待插入的元素小,第i + 1个数据比待插入元素大),直到排序完成。
原理依旧比较简单上代码
#include <iostream>
#define int long long
signed main() {
int n;
std::cin>>n;
int a[n + 1];
for(int i = 1;i <= n;i ++){
std::cin>>a[i];
}
for(int i = 2;i <= n;i ++){
int t = a[i];//记录待插入元素的值
int j = i - 1;
while(t > a[j]){
a[j + 1] = a[j];
j -- ;
}
a[j + 1] = t;
}
for(int i = 1;i <= n;i ++){//遍历输出
std::cout<<a[i]<<" ";
}
return 0;
}
未完,再续……
标签:比较简单,int,元素,long,算法,排序,数据,不会 From: https://www.cnblogs.com/clearTea/p/17488561.html