1. 以数组{4,2,8,0,5,7,1,3,9}为例,进行升序或者降序排序
降序排序:
#include<iostream>
using namespace std;
int main() {
int arr[] = {4,2,8,0,5,7,1,3,9};
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) {
for (int j = i + 1; j < sizeof(arr) / sizeof(arr[0]); j++) {
if (arr[i] < arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
for (int k = 0; k < sizeof(arr) / sizeof(arr[0]); k++) {
cout << arr[k] << " ";
}
cout << endl;
system("pause");
return 0;
}
升序排序:
#include<iostream>
using namespace std;
int main() {
int arr[] = {4,2,8,0,5,7,1,3,9};
//开始冒泡排序
//总共的排序轮数为 元素个数-1
for (int i = 0; i < sizeof(arr) / sizeof(arr[0])-1; i++) {
//内层循环对比 次数 = 元素个数-当前轮数-1
for (int j = 0; j < sizeof(arr) / sizeof(arr[0])-i-1; j++) {
//如果第一个数字比第二个数字大,交换两个数字
if (arr[j] > arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
for (int k = 0; k < sizeof(arr) / sizeof(arr[0]); k++) {
cout << arr[k] << " ";
}
cout << endl;
system("pause");
return 0;
}
2. 利用函数模板实现排序函数,实现对不同数据类型数组排序,使用选择排序,规则为从大到小
#include <iostream>
using namespace std;
//交换函数模板
template<typename T>
void mySwap(T& a, T& b) {
int temp = a;
a = b;
b = temp;
}
//排序算法
template<typename T>
void mySort(T arr[],int len) {
for (int i = 0; i < len; i++) {
int max = i; //认定最大值下标
for (int j = i + 1; j < len; j++) {
//认定的最大值比遍历出的数值小,说明j下标元素才是真正最大值
if (arr[max] < arr[j]) {
max = j;//更新最大值下标
}
}
if (max != i) {
mySwap(arr[max], arr[i]);
}
}
}
//打印数组的模板
template<typename T>
void printArray(T arr[], int len) {
for (int i = 0; i < len; i++) {
cout << arr[i] << " ";
}
cout << endl;
}
void test01() {
char charArr[] = "bcdefr";
int num = sizeof(charArr) / sizeof(char);
mySort(charArr, num);
printArray(charArr, num);
}
void test02() {
int intArr[] = { 3,6,1,9,7,4 };
int num = sizeof(intArr) / sizeof(int);
mySort(intArr, num);
printArray(intArr, num);
}
int main() {
test01();
test02();
system("pause");
return 0;
}