剛學(xué)c++,利用兩種間的排序算法來(lái)練練手0.0
1.冒泡法排序
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
int main(){
int n_array[] = {7,2,1,4,6};
int i,j;
int temp = 0;
int len = sizeof(n_array)/sizeof(n_array[0]);
cout<<"數(shù)組長(zhǎng)度為"<<len<<endl;
for(i=0;i<len;i++){
for (j=0;j<len-i-1;j++){
if(n_array[j]>n_array[j+1]){
temp = n_array[j];
n_array[j] = n_array[j+1];
n_array[j+1] = temp;
}
}
}
cout<<"數(shù)組順序排列為"<<endl;
for(i=0;i<len;++i){
cout<<n_array[i]<<endl;
}
}
2.快速排序
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
int main(){
int n_array[] = {7,2,1,4,6};
int i,j,min_index;
int temp = 0;
int len = sizeof(n_array)/sizeof(n_array[0]);
cout<<"數(shù)組長(zhǎng)度為"<<len<<endl;
for(i=0;i<len;i++){
min_index = i;
for (j=i+1;j<len;j++){
if(n_array[min_index]>n_array[j]){
min_index = j;
}
}
if (min_index!=i){
temp = n_array[i];
n_array[i] = n_array[min_index];
n_array[min_index] = temp;
}
}
cout<<"數(shù)組順序排列為"<<endl;
for(i=0;i<len;++i){
cout<<n_array[i]<<endl;
}
}
總結(jié)以下兩種算法的思路不同點(diǎn):
冒泡法:每次比較的時(shí)候某一個(gè)位置的數(shù)只比較一次,且都在相鄰兩個(gè)數(shù)之間進(jìn)行比較,找到最大值(或最小值),通過(guò)冒泡的方式實(shí)現(xiàn)。
選擇排序:第一個(gè)循環(huán)里假設(shè)第一個(gè)位置的數(shù)為最小值,依次與其他的位置的數(shù)進(jìn)行比較,如果有小于當(dāng)前的位置的數(shù),則兩個(gè)數(shù)交換位置,從而確定第一個(gè)最小值,緊接著假定當(dāng)前的第二個(gè)數(shù)為出去第一個(gè)最小值的情況下的最小值,第二個(gè)循環(huán)將第二個(gè)數(shù)分別與后續(xù)的參數(shù)分別進(jìn)行比較,如果有小于第二個(gè)位置數(shù)的則進(jìn)行數(shù)據(jù)交換,從而確定第二小的值。