2016.8.23 C++
冒泡排序:
相邻两个元素做比较,满足要求,互换元素
void sortPole(){
int a[8]={5,10,9,2,3,4,6,7};
for (int i=1; i<8; i++) {//
for (int j=0; j<8-i; j++) {
if (a[j]<a[j+1]) {
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for (int i=0;i<8 ; i++) {
cout<<a[i]<<endl;
}
}
插入排序
void sortCharu(){
int a[8]={4,5,6,3,7,8,1,2};
for (int i=1; i<8; i++) {
int j=0;
while (j<i&&a[j]<=a[i]) {
j++;
}
if (j<i) {
int k=i;
int temp=a[i];
while (k>j) {
a[k]=a[k-1];
k--;
}
a[k]=temp;
}
}
for (int i=0; i<8; i++) {
cout<<a[i]<<endl;
}
}
选择排序(变相的冒泡排序)
void sortSelect(){
int a[8]={4,5,6,3,7,8,1,2};
for (int i=0; i<8; i++) {
// 每次让第一个元素为最小或最大
for (int j=i+1; j<8; j++) {
int index=i;
if (a[index]>a[j]) {
index=j;
}
if (index!=i) {
int temp=a[i];
a[i]=a[index];
a[index]=temp;
}
}
}
for (int i=0; i<8; i++) {
cout<<a[i]<<endl;
}
}
快速排序:
void sortSupai(int *arr,int low,int high){
if (low>=high) {
return;// 控制结束递归
}
int first=low;//设置最低点
int last=high;
int key=arr[first];// 设置key值
while (first<last) {
while (first<last&&arr[last]>=key){
--last;
}
arr[first]=arr[last];
while (first<last&&arr[first]<=key){
++first;
}
arr[last]=arr[first];
}
arr[first]=key;
sortSupai(arr, low,first-1);
sortSupai(arr, first+1,high);
}