冒泡排序&快速排序

冒泡排序
相邻的两个数两两比较,如果两数逆序,则交换。
n个数需要进行n-1趟的两两比较。
10个数进行冒泡排序,输出结果
#include <stdio.h>
int main() {
    int a[10],i,j,temp;
    printf("请输入10个数:");
    for(i=0;i<10;++i)
        scanf("%d",&a[i]);
    printf("\n");
    for(j=0;j<9;++j)
        for(i=0;i<9-j;++i){
            if(a[i]>a[i+1]){
                temp=a[i];
                a[i]=a[i+1];
                a[i+1]=temp;
            }
        }
    printf("the sorted numbers:");
    for(i=0;i<10;i++)
        printf("%d ",a[i]);
    return 0;
}

快速排序

#include<iostream>
using namespace std;
typedef struct{
    int data[50];
    int length;
}SqList;
int partition(SqList &L,int low,int high){
    L.data[0]=L.data[low];
    int pivotkey=L.data[0];
    while(low<high){
        while(low<high&&L.data[high]>=pivotkey) --high;
        L.data[low]=L.data[high];
        while(low<high&&L.data[low]<=pivotkey) ++low;
        L.data[high]=L.data[low];
    }
    L.data[low]=L.data[0];
    return low;
}
void quickSort(SqList &L,int low,int high){
    int pivotloc;
    if(low<high){
        pivotloc=partition(L,low,high);
        quickSort(L,low,pivotloc-1);
        quickSort(L,pivotloc+1,high);
    }
}
int main(){
    SqList L;
    cin>>L.length;
    for(int i=1;i<L.length;++i)
        cin>>L.data[i];
    quickSort(L,1,L.length-1);
    cout<<"快排后的数字顺序为"<<endl;
    for(int j=1;j<L.length;++j)
        cout<<L.data[j]<<" ";
    return 0;
}

 

posted @ 2021-04-16 16:58  Makerr  阅读(84)  评论(0编辑  收藏  举报