码迷,mamicode.com
首页 > 编程语言 > 详细

排序问题

时间:2018-03-17 00:37:49      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:int   递归   排序   范围   分治   class   快速   插入   else   

(1)插入排序

 1 void insertSort(int arr[], int n){
 2     int i,j,t;
 3 
 4     for(i=1; i<n; i++){
 5         t = arr[i];
 6         for(j=i-1; arr[j]>t && j>=0; j--){
 7             arr[j+1] = arr[j];
 8         }
 9         arr[j+1] = t;
10     }
11 }

(2)简单的快速排序

 

 1 void q_sort(int arr[], int sp, int ep){
 2     int m, i, t;
 3 
 4     if(sp >= ep)
 5         return;
 6     else{
 7         m = sp;
 8         for(i=sp+1; i<=ep; i++){
 9             if(arr[i] < arr[sp]){
10                 m++;
11                 t = arr[m];
12                 arr[m] = arr[i];
13                 arr[i] = t;
14             }
15         }
16 
17         t = arr[sp];
18         arr[sp] = arr[m];
19         arr[m] = t;
20 
21         q_sort(arr, sp, m-1);
22         q_sort(arr, m+1, ep);
23     }
24 }

原理:利用分治的思想,将数组排序范围最左端的元素作为参照,将比其小的元素移到其左边,将比其大的元素移动到其右边,在分别对两边的进行递归排序即可。


 

(3)更好的集中快速排序

 

排序问题

标签:int   递归   排序   范围   分治   class   快速   插入   else   

原文地址:https://www.cnblogs.com/lwyeah/p/8586475.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!