排序算法 C++代码实现

插入排序:

就像摸牌,摸一张插进去,找一个哨兵。从第二个開始,和前一个比較。小的话前移一位。

#include <iostream>
#include<stdlib.h>

using namespace std;
#define N 4   //不能加分号结束

class sort
{
public:
    void insertSort(int a[],int n);
    sort()
    {
        cout<<"Start"<<endl;
    }
    sort(const sort&s);
private:

};
void sort::insertSort(int a[],int n)
{
    int i=1,j=0,key;//设两个变量值的目的是内外变化。假设仅仅有一个内外的变化会产生影响
    while(i<n)    //外循环
    {
        key=a[i];//把第几个拿出来。和前边的对照;
        j=i-1;   //前边的那个值
        while(key<a[j]&&j>=0)  //内循环
        {
            a[j+1]=a[j];   //把当前值改成前一个值
            j--;          //位置前移一位
        }
        a[j+1]=key;      //比較成功之后。把哨兵插到当前位置,注意用的是j
        i++;   //转到下次循环
    }
    cout<<"-----------\n ";
    for(int i=0;i<n;i++)
    {
        cout<<a[i];
    }
}
sort::sort(const sort&s)
{
    cout<<"news\n";
}
int main()
{
    sort s;
    //sort b=s;
    int a[N];
    cout<<"lease input arr.";
    for(int i=0;i<N;i++)
    {
        cin>>a[i];
    }
    cout<<"shuchu wei";
    for(int i=0;i<N;i++)
    {
        cout<<a[i]<<endl;
    }
    s.insertSort(a,N);

    return 0;
};
</pre><p><span style="font-family:SimHei; font-size:24px">冒泡排序:</span></p><p><span style="font-family:SimHei"></span></p><pre name="code" class="html"><span style="font-size:14px;">#include <iostream>
#include<stdlib.h>

using namespace std;
#define N 4   //不能加分号结束

class sort
{
public:
    void insertSort(int a[],int n);
    sort()
    {
        cout<<"Start"<<endl;
    }
    sort(const sort&s);
    void bubblesort(int a[],int n);
private:
    int c;
};
void sort::insertSort(int a[],int n)
{
    int i=1,j=0,key;//设两个变量值的目的是内外变化,假设仅仅有一个内外的变化会产生影响
    while(i<n)    //外循环
    {
        key=a[i];//把第几个拿出来。和前边的对照。
        j=i-1;   //前边的那个值
        while(key<a[j]&&j>=0)  //内循环
        {
            a[j+1]=a[j];   //把当前值改成前一个值
            j--;          //位置前移一位
        }
        a[j+1]=key;      //比較成功之后,把哨兵插到当前位置,注意用的是j
        i++;   //转到下次循环
    }
    cout<<"-----insertsort------\n ";
    for(int i=0;i<n;i++)
    {
        cout<<a[i];
    }
    cout<<endl;
}
void sort::bubblesort(int a[],int n)
{
    int i=0,j=n;
    for(;i<n-1;i++)//外层循环
    {
        for(;j>i;j--)//内层循环,从最后一个開始向上冒泡。冒泡次数逐渐减一
        {
            if(a[j]<a[j-1])//倒数開始,两个数进行比較,下边是交换过程
            {
                int temp=a[j-1];
                a[j-1]=a[j];
                a[j]=temp;
            }
        }
    }
    cout<<"-----bubblesort------\n ";
    for(int i=0;i<n;i++)
    {
        cout<<a[i];
    }
    cout<<endl;
}
sort::sort(const sort&s)
{
    cout<<"news\n";
}
int main()
{
    sort s;
    //sort b=s;
    int a[N];
    cout<<"lease input arr.";

    for(int i=0;i<N;i++)
    {
        cin>>a[i];
    }
    cout<<"shuchu wei";
    for(int i=0;i<N;i++)
    {
        cout<<a[i];
    }
    cout<<endl;

    s.insertSort(a,N);
    s.bubblesort(a,N);

    return 0;
};</span><span style="font-size:24px;">
</span>

其它算法待续....

时间: 2024-10-29 10:46:19

排序算法 C++代码实现的相关文章

Python实现各种排序算法的代码示例总结

Python实现各种排序算法的代码示例总结 作者:Donald Knuth 字体:[增加 减小] 类型:转载 时间:2015-12-11我要评论 这篇文章主要介绍了Python实现各种排序算法的代码示例总结,其实Python是非常好的算法入门学习时的配套高级语言,需要的朋友可以参考下 在Python实践中,我们往往遇到排序问题,比如在对搜索结果打分的排序(没有排序就没有Google等搜索引擎的存在),当然,这样的例子数不胜数.<数据结构>也会花大量篇幅讲解排序.之前一段时间,由于需要,我复习了

排序算法总结---代码+性能

// data_sort_alg.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include "sort_alg.h" #include <iostream> #include <vector> void show(std::vector<int> &a) { std::vector<int>::iterator it=a.begin(); while(it!=a.

各种排序算法的代码

1 // ALLKindsOfSorts.cpp : 定义控制台应用程序的入口点. 2 // 3 4 #include "stdafx.h" 5 #include<iostream> 6 #include<vector> 7 #include<bitset> 8 9 using namespace std; 10 11 ////////////////////////////////////////所有的排序总结///////////////////

C言语疾速排序算法及代码

疾速排序是对冒泡法排序的一种改良.疾速排序算法 的根本思惟是:将所要停止排序的数分为阁下两个局部,个中一局部的一切数据都比别的一 局部的数据小,然后将所分得的两局部数据停止异样的划分,反复履行以上的划分操作,直 到一切要停止排序的数据变为有序为止.能够仅依据根本思惟对疾速排序的看法并不深,接下来以对n个无序数列A[0], A[1]-, A[n-1]采取疾速排序办法停止升序陈列为例停止解说.(1)界说两个变量low和high,将low.high辨别设置为要停止排序的序列的肇端元素和最初一个元素的下

十种排序算法总结(代码及说明)

1.冒泡排序 基本思想是:两两比较相邻记录的关键字,如果反序则交换 冒泡排序时间复杂度最好的情况为O(n),最坏的情况是O(n^2) 改进思路1:设置标志位,明显如果有一趟没有发生交换(flag = false),说明排序已经完成 改进思路2:记录一轮下来标记的最后位置,下次从头部遍历到这个位置就Ok. 原冒泡排序代码如下: void swap(int left, int right) { left = left ^ right; right = right ^ left; left = lef

十大排序算法 JAVA代码

冒泡排序 插入排序 选择排序 希尔排序 归并排序 快速排序 堆排序 计数排序 基数排序 桶排序  O是指计算机执行命令所需的时间 nlogn是算法的时间复杂度,一般排序用的是log2n 总体总结表:这个有个错误就是归并排序需要一个o(n)的辅助数组  冒泡排序 主要思想:外层循环从1到n-1,内循环从当前外层的元素的下一个位置开始,依次和外层的元素比较,出现逆序就交换. 特点:stable sort(稳定性排序).In-place sort(不占用额外的空间,只是交换元素) 最优复杂度:当输入数

简单的选择排序算法实现代码

1 #include<stdio.h> 2 #define N 12 3 //length统计数组的长度 返回最后元素的下标 4 int length(int a [N]){ 5 for(int i = 0;i<=N;i++){ 6 if(a[i]==0) return i-1; 7 8 } 9 } 10 //打印输出数组元素 11 void show(int a[N]){ 12 for(int i= 0;i<N;i++){ 13 if(a[i]!=0) printf("

C言语选择排序算法及代码

选择排序是排序算法的一种,这里以从小到大排序为例停止解说. 根本思惟及举例阐明 选择排序(从小到大)的根本思惟是,起首,选出最小的数,放在第一个地位:然后,选出第二小的数,放在第二个地位:以此类推,直到一切的数从小到大排序.在完成上,我们平日是先肯定第i小的数地点的地位,然后,将其与第i个数停止交流.下面,以对 3  2  4  1 停止选择排序阐明排序进程,运用min_index 记载以后最小的数地点的地位.第1轮 排序进程 (寻觅第1小的数地点的地位)3  2  4  1(最后, min_i

C言语拔出排序算法及代码

拔出排序是排序算法的一种,它不改动原有的序列(数组),而是创立一个新的序列,在新序列长进行操作.这里以从小到大排序为例停止解说. 根本思惟及举例阐明 拔出排序的根本思惟是,将元素逐一添加到曾经排序好的数组中去,同时请求,拔出的元素必需在准确的地位,如许本来排序好的数组是依然有序的.在实践运用中,平日是排序全部无序数组,所以把这个无序数组分为两局部排序好的子数组和待拔出的元素.第一轮时,将第一个元素作为排序好的子数组,拔出第二个元素:第二轮,将前两个元素作为排序好的数组,拔出第三个元素.以此类推,

几种排序算法及其代码实现(四)

四.归并排序 1.基本思想:归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的.然后再把有序子序列合并为整体有序序列. 2.实例 3.java实现 1 packagecom.sort; 2 3 //稳定 4 public class 归并排序{ 5    public static void main(String[] args) { 6        int[] a={49,38,65,97,76,13,27,49,78