数据结构之排序

时间:2014-05-15 16:54:49   收藏:0   阅读:297

1.排序的分类

在待排序的文件中,若存在多个关键字相同的记录,经过排序后这些具有相同关键字的记录之间的相对次序保持不变,该排序方法是稳定的;若具有相同关键字的记录之间的相对次序发生变化,则称这种排序方法是不稳定的。

稳定的排序 时间复杂度   空间复杂度
冒泡排序 最差和平均是O(n2),最好是O(n)    1 
双向冒泡排序 最差和平均是O(n2),最好是O(n)  1
插入排序 最差和平均是O(n2),最好是O(n)   1
归并排序  最差、平均、最好都是O(nlogn) O(n) 
桶排序  O(n) O(k) 
基数排序  O(dn)(d是常数) O(n) 
二叉树排序  O(nlogn) O(n) 
图书馆排序  O(nlogn)

(1+e)n 

 

 

不稳定的排序 时间复杂度 空间复杂度
选择排序 最差和平均是O(n2),最好是O(n) 1
希尔排序 O(nlogn) 1
堆排序 最差、平均、最好都是O(nlogn) 1
快速排序 平均O(nlogn),最差是O(n2) O(nlogn)

 2.常见排序算法分析:

1.冒泡法

冒泡法就是第一个数开始,不断地和后面地数比较,大的数往后,一轮后最大的数跑到最后;为了使序列在正序列前提下,能减少排序的次数,需要用一个BOOL型变量来判断是否发生了交换

bubuko.com,布布扣
 1 #include<iostream>
 2 using namespace std;
 3 
 4 
 5 void sort(int a[],int n)
 6 {
 7     int i,j,temp;
 8     bool exchange;
 9     for(i=0;i<n-1;i++)
10     {
11         exchange = false;
12         for(j=0;j<n-i-1;j++)
13         {
14             if(a[j+1]<a[j])
15             {
16                 temp = a[j+1];
17                 a[j+1] = a[j];
18                 a[j] = temp;
19             }
20             exchange = true;
21         }
22         if(!exchange)
23             return;
24     }
25 }
26 
27 
28 
29 int main()
30 {
31     int a[] = {13,31,45,26,78,56,90,24,15,81};
32     sort(a,10);
33     for(int i=0;i<10;i++)
34         cout<<a[i]<< ;
35     cout<<endl;
36     return 0;
37 }
bubuko.com,布布扣

2.直接插入法

注意用while来实现寻找插入的位置,减少辅助变量

bubuko.com,布布扣
 1 #include<iostream>
 2 using namespace std;
 3 
 4 
 5 void sort(int a[],int n)
 6 {
 7     int i,j;
 8     for(i=1;i<=n-1;i++)
 9     {
10         j = i-1;
11         int temp = a[i];
12         while(temp<a[j])
13         {
14             a[j+1]=a[j];
15             j--;
16         }
17         a[++j]=temp;
18     }
19 }
20 
21 
22 
23 int main()
24 {
25     int a[] = {13,31,45,26,78,56,90,24,15,81};
26     sort(a,10);
27     for(int i=0;i<10;i++)
28         cout<<a[i]<< ;
29     cout<<endl;
30     return 0;
31 }
bubuko.com,布布扣

 

 

数据结构之排序,布布扣,bubuko.com

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!