选择排序
void selectSort(int* A, int n){ //从小到大排序
for(int i=0;i<n-1;i++)
for(int j=i+1;j<n;j++){
if(A[i] > A[j]){
int temp = A[i];
A[i] = A[j];
A[j] = temp;
}
}
}
插入排序
void insertSort(int* A, int n){ //从小到大排序
for(int i=1;i<n;i++)
for(int j=i;j>0;j--){
if(A[j] < A[j-1]){
int temp = A[j];
A[j] = A[j-1];
A[j-1] = temp;
}
}
}
冒泡排序
void bubbleSort(int* A, int n){ //从小到大排序
for(int i=0;i<n-1;i++)
for(int j=0;j<n-1-i;j++){
if(A[j] > A[j+1]){
int temp = A[j];
A[j] = A[j+1];
A[j+1] = temp;
}
}
}
<algorithm> 中 sort 函数使用
#include <iostream>
#include <algorithm>
#include <ctime>
using namespace std;
const int num = 5;
struct Data{
int id;
int seed;
}datas[num];
bool cmp(Data a, Data b){
if(a.seed != b.seed) return a.seed > b.seed;
else return a.id < b.id;
}
void display(Data* datas){
for(int i=0;i<num;i++)
cout<<"data"<<datas[i].id<<": "<<datas[i].seed<<endl;
cout<<endl;
}
int main(int argc, char** argv) {
srand((unsigned)time(0));
for(int i=0;i<num;i++){
datas[i].id = i+1;
datas[i].seed = rand()%10;
}
display(datas);
sort(datas, datas+num, cmp);
display(datas);
return 0;
}
// 原始值输出
data1: 5
data2: 7
data3: 2
data4: 5
data5: 6
// 排序后输出
data2: 7
data5: 6
data1: 5
data4: 5
data3: 2
网友评论