冒泡排序&快速排序
冒泡排序
相邻的两个数两两比较,如果两数逆序,则交换。
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; }