简单选择排序

对《大话数据结构》P384~P385—简单选择排序,进行了自己的理解并完善了代码。

简单选择排序如下:

代码和解释如下(VS2012测试通过):

 1 #include <iostream>
 2 using namespace std;
 3 #define MAXSIZE 5//用于要排序数组个数最大值,可根据需要修改
 4 
 5 //排序用的顺序表结构
 6 typedef struct
 7 {
 8     int r[MAXSIZE+1];//定义一个数组,用于存储要排序的数,r[0]作为临时变量
 9     int length;//用于记录顺序表的长度
10 }SqList;
11 
12 //排序表的初始化
13 SqList *InitSqList(SqList *L)
14 {
15     L=new SqList;
16     L->length=5;//本例中长度是5
17     cout<<"input list"<<endl;
18     for(int i=1;i<=L->length;i++)
19         cin>>L->r[i];
20     return L;
21 }
22 
23 //数组遍历输出
24 void PrintSqList(SqList *L)
25 {
26     for(int i=1;i<=L->length;i++)
27         cout<<L->r[i]<<" ";
28     cout<<endl;
29 }
30 
31 
32 //交换r[i]和r[j]
33 void swap(SqList *L,int i,int j)
34 {
35     int temp=L->r[i];
36     L->r[i]=L->r[j];
37     L->r[j]=temp;
38 }
39 
40 //简单选择排序
41 void SelectSort(SqList *L)
42 {
43     int min;
44     for(int i=1;i<L->length;i++)
45     {
46         min=i;//min存储最小元素的下标,先假设当前元素最小
47         for(int j=i+1;j<=L->length;j++)
48         {
49             if(L->r[min]>L->r[j])
50                 min=j;
51         }
52         cout<<"min is "<<min<<endl;
53         if(i!=min) swap(L,i,min);//把i~length中最小的数归位
54         cout<<"after one sort"<<endl;
55         PrintSqList(L);
56     }
57 }
58 
59 int main()
60 {
61     SqList *p=NULL;
62     p=InitSqList(p);//初始化
63     SelectSort(p);//排序
64     cout<<"after sort"<<endl;
65     PrintSqList(p);//输出
66 }

运行结果:

时间复杂度分析见草稿图。

时间复杂度是O(n2)。

转载于:https://www.cnblogs.com/hslzju/p/5413896.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值