排序问题

Posted lwyeah

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序问题相关的知识,希望对你有一定的参考价值。

(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)更好的集中快速排序

 

以上是关于排序问题的主要内容,如果未能解决你的问题,请参考以下文章

以下代码片段的时间复杂度是多少?

Realm和RecyclerView项目排序和自动ViewPager片段通信

ElasticSearch学习问题记录——Invalid shift value in prefixCoded bytes (is encoded value really an INT?)(代码片段

markdown 数组排序片段

找到多个名为 [spring_web] 的片段。这对于相对排序是不合法的

如何从另一个片段访问片段对象