`

选择排序C++实现

 
阅读更多

算法的设计策略:

 

 

1:蛮力法------穷尽所有可能性

 

 

2:递归技术:hanno

 

 

3:分治法:分而制之:一分二二分四的思想

 

 

4:模拟法:模拟实际场景

 

 

5:贪心算法:当前最大利益,例如炒股大多数股民都是考虑当前最大利益

 

 

6:优化法:生物学优选原理,例如基因

 

 

 

 

 

 

 

 

 

 

 

 

插入、冒泡、选择事件复杂度:O(N^2)

 

快速排序法:O(N*logN)

 

 

 

 

 

 

 

 

 

 

 

 

选择排序每次选择一个最小(或最大)的元素放到相应的位置

 

 

 

 

 

 

Goodcase1:一个桌子上有方块A到方块K13张扑克派,如何排序?

 

 

:每次拿剩下的牌中最小的那个放到手里即可即:每次拿最小的那个放到手里当没有牌了排序就完成了。

 

 

 

 

 

 

 

Goodcase2:一个数组里面有几个423981如何选择排序

 

 

11423981

 

 

21243982

 

 

31234983

 

 

41234984

 

 

5:123489 8

 

 

 

 

 

 

算法步骤:

 

 

1:i0~N-1

 

 

2:找从下标[i]到下标[N-1]的数据中最小元素的位置minPos

 

 

3:把最小元素与下标是[i]的元素交换

 

 

 

 

 

☞:运行结束,好比已经没有扑克牌

 

 

 

代码:

  

#include <iostream> 
#include <ctime> 
using namespace  std; 
//算出运算所用事件 
 
//定义 SelectSort 方法  类型灵活一些 
typedef  int    T; 
void    SelectSort (T*  arr, int num) 
{ 
    int minPos = 0; 
 
    //I:遍历 从0 到num-1(因为最后一个不用比所以为num-1 ,注意个数和坐标最大值之间的换算)  
    for(int i=0; i<num-1; i++) 
    { 
        // 1:确定插入位置(i)位置正巧为i 2:确定最小元素位置 minPos  需要循环判断 
        minPos = i;   //假设第一个是最小的位置
 
        for (int j=i+1; j < num; j++)  //注意j从i后一个开始对边前面  j < num因为要比较最后一项 
        { 
            if(arr[j] < arr[minPos])  //找到最小的
            { 
                minPos = j;     //找到最小的位置 
            } 
 
        }  
        //2:交换minPos 和 插入位置(i)的值 
        swap(arr[minPos], arr[i]); 
    } 
} 
     
 
int main() 
{ 
 //定义102400长度的数组 越长越能计算所需世间   赋值 
    const int kNum = 102400; 
    T arr[kNum]; 
    for (int i=0; i<kNum; i++) 
    { 
        arr[i] = kNum - i; 
    } 
    time_t tStart = time(NULL); 
    SelectSort(arr, kNum); 
    time_t tEnd = time(NULL); 
     
    cout<<"require time:"<<tEnd-tStart <<endl; 
    //打印前十个看看是否完成排序 
    for(int i =0; i<10; i++) 
    { 
        cout<<arr[i]<<"     "; 
    } 
    system("pause"); 
    return 0; 
 
} 

 

运行结果

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    数据结构与算法-选择排序C++实现

    内容概要:本文详细介绍了选择排序算法的基本原理及其时间复杂度、空间复杂度,并通过C++代码展示了其实现方式。选择排序是一种不稳定排序方法,它每次从未排序部分中选取最小的元素放置到当前有序部分的末尾。 适合...

    堆排序的c++实现代码

    下面是一个基本的C++实现堆排序的示例代码: ```cpp #include #include void heapify(int arr[], int n, int i) { int largest = i; // 初始化最大元素为根节点 int left = 2 * i + 1; int right = 2 * i + 2...

    C++语言的算法实现包括插入排序冒泡排序堆排序快速排序

    在提供的"Algorithms"压缩包中,包含了这些排序算法的C++实现,你可以通过阅读代码和运行实例来加深理解。代码中的注释将帮助你解析每一步操作,从而更好地学习和掌握这些基础但重要的编程技能。

    C++实现堆排序

    1、 实现堆排序算法。 2、 理论分析并实验验证堆排序算法的时间复杂度。

    堆排序 c++实现 可运行

    堆排序算法的c++实现,包括建堆,堆排序等。算法和复杂度参考《算法导论》。

    排序算法实现_C++

    掌握它们的原理和C++实现,对于提升编程能力,尤其是在处理大规模数据时优化程序性能,具有显著的意义。通过实际编写和调试代码,可以加深对算法的理解,也有助于你在面对实际问题时能够灵活运用这些工具。

    C++堆排序实现算法

    简单的堆排序算法:以定长数组为例,动态数组等可以以此类推

    桶排序 c++实现

    桶排序(Bucket Sort)是一种分布式排序算法,它将待排序的数据分布到多个“桶”中,...C++实现桶排序需要合理地分配和操作桶,以及对每个桶进行排序。同时,理解《算法导论》中的相关理论对实现和优化算法有极大帮助。

    排序算法实现大全(C++实现)

    根据给定的信息,本文将详细解释几种常见的排序算法及其C++实现方式,这些算法包括直接插入排序、希尔排序、选择排序、冒泡排序以及快速排序。 ### 一、直接插入排序 #### 1.1 基本概念 直接插入排序是一种简单的...

    插入排序C++实现

    网上有很多讲插入排序的算法,但大多数都没有提供完整的程序,于是我在业余时间参考网上资料写了一个插入排序的完整C++实现,在VC6.0++编译通过,大家打开压缩文件点击sort.dsw文件打开即可编译运行,代码也有详解的...

    Verilog/C++实现排序算法:Verilog/C++实现排序算法:冒泡排序、选择排序、并行全比较排序、串行全比较排序

    C++实现时,可以使用一个额外的变量来记录当前未排序部分的最小值,然后交换位置。Verilog中,可以使用for循环和比较逻辑来实现相同的功能。 **并行全比较排序**是针对并行处理环境设计的一种排序方法。在多核...

    快速排序算法c++实现

    总的来说,这个C++实现的快速排序是一个实用的工具,它展示了分治策略的威力,并且通过计时功能帮助理解算法的时间复杂度。同时,由于其通用性,它可以适应各种不同的数据源,为处理大规模数据提供了一个有效的解决...

    c++语言实现排序

    根据给定的信息,本文将详细解释使用C++语言实现排序功能的相关知识点,包括代码解析、算法原理以及在C++编程中的应用。 ### C++语言实现排序功能 #### 一、概述 C++是一种广泛使用的面向对象编程语言,以其高效性...

    堆排序11.cpp 使用C++实现

    堆排序11.cpp 使用C++实现堆排序11.cpp 使用C++实现堆排序11.cpp 使用C++实现堆排序11.cpp 使用C++实现堆排序11.cpp 使用C++实现堆排序11.cpp 使用C++实现堆排序11.cpp 使用C++实现堆排序11.cpp 使用C++实现堆排序11...

    归并排序C++实现的例子

    在C++中实现归并排序,我们需要理解以下几个关键知识点: 1. **分治法**:分治法是计算机科学中常用的一种算法设计策略,它将大问题分解为小问题来解决。归并排序就是典型的分治法应用,它将一个大数组分为两个小数...

    堆排序5.cpp 使用C++实现的堆排序

    堆排序5.cpp 使用C++实现的堆排序堆排序5.cpp 使用C++实现的堆排序堆排序5.cpp 使用C++实现的堆排序堆排序5.cpp 使用C++实现的堆排序堆排序5.cpp 使用C++实现的堆排序堆排序5.cpp 使用C++实现的堆排序堆排序5.cpp ...

    c++实现各种排序

    各种排序算法集合,快排、堆排、归并等,由c++实现,代码简短,易懂。

    《数据结构课设》快速排序C++实现

    在这个《数据结构课设》中,你将学习到如何用C++实现快速排序。C++是一种通用的、面向对象的编程语言,具有丰富的库支持和高效性,是实现算法的理想选择。C++中的标准模板库(STL)虽然提供了sort函数,但理解并实现...

    各种主要排序算法的C++实现

    在IT领域,排序算法是计算机科学中的基础但至关重要的部分,尤其在编程语言如C++中,理解并能熟练运用各种排序算法对于提升程序效率至关重要。以下是对标题和描述中涉及的主要排序算法的详细解释: 1. **插入类排序...

    插入排序、冒泡排序、归并排序、快速排序的C++实现

    插入排序、冒泡排序、归并排序、快速排序四种排序方式的C++实现,各写成了一个函数,主函数中可以选择调用那一个。初始化数组时用的是随机种子srand((int)time(0))。在宏中定义数组大小。

Global site tag (gtag.js) - Google Analytics