算法不会,尚能饭否之排序——直接选择排序
2011-03-20 19:45
197 查看
前面讲了那么多的排序,不知道有没有人看,如果有人看,就吱一声,也好让我有信心在写下去了!
不管了,还是那句话,写自己的博文,让别人说去吧,现在应该是,写自己的博文,让别人看去吧!看不
看,是你的事,写不写是我的事!好了,废话少说,开始今天的征程——直接选择排序!
算法思想:所谓直接选择排序,如下:
(1) 在一组对象v[i]~v[n - 1]中选择具有最小关键码的对象
(2) 若它不是这组对象中的第一个对象,则将它与这组对象中的第一个对象对调
(3) 在这组对象中剔除这个具有最小关键码的对象,在剩下的对象v[i + 1]~v[n - 1]中重复执行第
(1)、(2)步,直到剩余对象只有一个为止。
说了这么多,你应该懂得~~。
好了,现在来讲讲我的实现方法。首先需要两层循环,为什么,看了,因为看了思路,直觉告诉我
的,现在我就告诉你是两层的。不要问我为什么?外层循环获得一个新的数,现在我的目的是将这个
新数放到数组中的正确地方去。你懂得。你要选择正确的地方,
内层循环就是控制这个选择的。如何选择,没获得一个新的数,你必须要将它们依次和这个数之前的
数进行比较,如果满足条件,什么条件,这个需要看你的了,因为条件有升序和降序之分的。好了,
满足了条件,就进行调换,数组中两个元素的对换那个是不是有点太简单了,我都不好意思提了。好
了。亲手实现吧。代码贴上:
这是我写的代码,如果大家觉得我写的不对,希望大家给我提出,和我一起分享。谢谢!我的宗旨
是,你我共同学习!
现在回过头来看看,直接选择排序和直接插入排序有什么不同吗?
不管了,还是那句话,写自己的博文,让别人说去吧,现在应该是,写自己的博文,让别人看去吧!看不
看,是你的事,写不写是我的事!好了,废话少说,开始今天的征程——直接选择排序!
算法思想:所谓直接选择排序,如下:
(1) 在一组对象v[i]~v[n - 1]中选择具有最小关键码的对象
(2) 若它不是这组对象中的第一个对象,则将它与这组对象中的第一个对象对调
(3) 在这组对象中剔除这个具有最小关键码的对象,在剩下的对象v[i + 1]~v[n - 1]中重复执行第
(1)、(2)步,直到剩余对象只有一个为止。
说了这么多,你应该懂得~~。
好了,现在来讲讲我的实现方法。首先需要两层循环,为什么,看了,因为看了思路,直觉告诉我
的,现在我就告诉你是两层的。不要问我为什么?外层循环获得一个新的数,现在我的目的是将这个
新数放到数组中的正确地方去。你懂得。你要选择正确的地方,
内层循环就是控制这个选择的。如何选择,没获得一个新的数,你必须要将它们依次和这个数之前的
数进行比较,如果满足条件,什么条件,这个需要看你的了,因为条件有升序和降序之分的。好了,
满足了条件,就进行调换,数组中两个元素的对换那个是不是有点太简单了,我都不好意思提了。好
了。亲手实现吧。代码贴上:
#include <iostream> #include <stdlib.h> using namespace std; void DirChooseSort(); //直接选择排序 void main() { DirChooseSort(); } void DirChooseSort() { int iNum; //参加排序数的个数 cout<<"请输入参加排序数的个数:"; cin>>iNum; //判断iNum的有效性 if (iNum <= 0) { cout<<"错误的输入值"<<endl; exit(0); } int *Array = new int[iNum]; //动态开辟存放排序数的数组 for (int i = 0; i < iNum; i++) { cin>>Array[i]; for (int j = 0; j < i; j++) { if (Array[j] > Array[i]) { int iTemp; iTemp = Array[i]; Array[i] = Array[j]; Array[j] = iTemp; } } } //输出排序ok的数组 for (int m = 0; m < iNum; m++) { cout<<Array[m]<<","; } }
这是我写的代码,如果大家觉得我写的不对,希望大家给我提出,和我一起分享。谢谢!我的宗旨
是,你我共同学习!
现在回过头来看看,直接选择排序和直接插入排序有什么不同吗?
相关文章推荐
- 算法不会,尚能饭否之排序——直接插入排序(Insert sort)
- 白话经典算法系列之四 直接选择排序及交换二个数据的正确实现
- 【算法拾遗(java描写叙述)】--- 选择排序(直接选择排序、堆排序)
- 基础算法-直接选择排序
- 算法笔记--直接选择排序
- 直接选择类排序算法思想和实现过程
- 第16周项目1-验证算法(5)直接选择排序
- 白话经典算法系列之四 直接选择排序及交换二个数据的正确实现
- 内部排序算法:直接选择排序法
- 白话经典算法系列之四 直接选择排序及交换二个数据的正确实现
- 项目 1 - 验证算法之(5)直接选择排序
- 算法小结-冒泡、选择排序、直接插入排序
- 我在北京找工作(二):java实现算法<1> 冒泡排序+直接选择排序
- 经典算法系列之四 直接选择排序及交换二个数据的正确实现
- 【转载】白话经典算法系列之四 直接选择排序及交换二个数据的正确实现
- 第十六周项目一验证算法(3)直接选择排序
- 第16周项目1-验证算法(5)直接选择排序
- 第十六周 项目1 验证算法-直接选择排序
- 第十六周实践项目1—验证算法(3)直接选择排序
- 第十六周 验证算法--直接选择排序