插入排序算法:
void sort_algo::insert_sort(int arr[],const int len){
for(int j = 1;j < len;++j){
int key = arr[j];
int i = j-1;
while(i >= 0 && arr[i] > key){
arr[i+1] = arr[i];
i = i-1;
}
arr[i+1] = key;
}
}
合并排序:
void merged(int arr[],const int begin_ind,const int gap_ind,const int end_ind, int temp[]){
int i=begin_ind,j=gap_ind+1;
int k =0;
while(i <= gap_ind && j <= end_ind){
if(arr[i]<arr[j]){
temp[k++] = arr[i++];
}
else{
temp[k++] = arr[j++];
}
}
while(i<=gap_ind){
temp[k++] = arr[i++];
}
while(j <= end_ind){
temp[k++] = arr[j++];
}
//
for (int i = 0; i < k; i++){
arr[begin_ind + i] = temp[i];
}
}
void sort_algo::merge_sort(int arr[],const int begin_ind,const int end_ind, int temp[]){
if(begin_ind < end_ind){
int gap_ind = (begin_ind+end_ind)/2;
merge_sort(arr,begin_ind,gap_ind,temp);
merge_sort(arr,gap_ind+1,end_ind,temp);
merged(arr,begin_ind,gap_ind,end_ind,temp);
}
}