1. 选择排序
/ 选择排序
void selectSort(){
int len = 10;
int a[len] = {10,56,2,98,74,3,49,15,26,30};
for(int i=0;i<len-1;i++){
// 使用index变量记录最小值的下标
int index = i;
int temp;
for(int j=i+1;j<len;j++){
if(a[j] > a[index]){
index = j;
}
}
// 如果最小值的下标和初始设置的值不一致,则交换数据的位置
if(index != i){
temp = a[i];
a[i] = a[index];
a[index] = temp;
}
}
for(int i=0;i<len;i++){
cout << a[i] << endl;
}
}
2. 冒泡排序
// 冒泡排序
void maopaopaixv(){
int len = 10;
int a[len] = {10,56,2,98,74,3,49,15,26,30};
int temp;
for(int i=0;i<len;i++){
for(int j=0;j<len-i-1;j++){
if(a[j] < a[j+1]){
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
for(int i=0;i<len;i++){
cout << a[i] << endl;
}
}
3. 插入排序
//插入排序(逆序输出)
void insertSort(){
int len = 10;
int a[len] = {10,56,2,98,74,3,49,15,26,30};
int temp;
for(int i=1;i<len;i++){
temp = a[i];
int j = i-1;
while(j>=0 && a[j] < temp){
a[j+1] = a[j];
j--;
}
a[j+1] = temp;
}
for(int i=0;i<len;i++){
cout << a[i] << endl;
}
}
4. 快速排序
执行方法:
int len = 10;
int a[len] = {10,56,2,98,74,3,49,15,26,30};
quickSort(a,0,9);
// 快速排序(升序输出)
void quickSort(int a[], int x, int y){
// 计算中间值
int mid = a[(x+y)/2];
int i = x, j = y;
// 总体思路,将小于mid的数移动到mid的左侧,将大于mid的数移动到mid的右侧
while(i <= j){
//在mid的左侧过滤到小于mid的数,这些数都是不需要进行移动的
while(a[i] < mid){
i++;
}
//在mid的右侧过滤到大于mid的数,这些数都是不需要进行移动的
while(a[j] > mid){
j--;
}
//交换i和j的值
if(i <= j){
int temp;
temp = a[i];
a[i] = a[j];
a[j] = temp;
i++;
j--;
}
}
if(x < j){
quickSort(a,x,j);
}
if(i < y){
quickSort(a,i,y);
}
}