• C++ 内部排序(一)


    先讲两个概念,所谓内部排序,指待排序的节点均存储在内存中。所谓排序的稳定性,指排序后,值相等的两个元素原来相对的位置是否发生变化了.举个例子。

    待排序列:3(1),1,5,3(2)  稳定排序:1,3(1),3(2),5  不稳定排序:1,3(2),3(1),5

    下面写了插入排序,冒泡排序和选择排序.

    /*sorting functions*/
    #include <iostream>
    #define MAXN 7
    using namespace std;
    
    void insert_sort(int *a, int length);
    void buble_sort(int *a, int length);
    void select_sort(int *a, int length);
    
    int main()
    {
    	int a[MAXN] = {34, 12, 67, 33, 23, 56, 78};
    	int length = MAXN;
    	//insert_sort(a, length);
    	//buble_sort(a, length);
    	select_sort(a, length);
    	return 0;
    }
    
    /*稳定排序*/
    void insert_sort(int *a, int length)
    {
    	int temp;
    	int i,j;
    	for(i=1; i<length; i++)
    	{
    		temp = a[i];
    		for(j=i-1; j>=0 && temp<a[j]; j--)
    		{
    			a[j+1] = a[j];
    		}
    		a[j+1] = temp;
    	}
    
    	for(i=0; i<length; i++)
    	{
    		cout<<a[i]<<" ";
    	}
    	cout<<endl;
    }
    
    /*稳定排序*/
    void buble_sort(int *a, int length)
    {
    	int i,j,temp;
    	for(i=0; i<length; i++)
    	{
    		for(j=0; j<length-1; j++)
    		{
    			if(a[j]>a[j+1])
    			{
    				temp = a[j+1];
    				a[j+1] = a[j];
    				a[j] = temp;
    			}
    		}
    	}
    	for(i=0; i<length; i++)
    	{
    		cout<<a[i]<<" ";
    	}
    	cout<<endl;
    }
    
    /*不稳定排序*/
    void select_sort(int *a, int length)
    {
    	int i,j,k,temp;
    	for(i=0; i<length-1; i++)
    	{
    		k = i;
    		for(j=i+1; j<length; j++)
    		{
    			if(a[j]<a[k])
    			{
    				k=j;
    			}
    		}
    		temp = a[i];
    		a[i] = a[k];
    		a[k] = temp;
    	}
    	for(i=0; i<length; i++)
    	{
    		cout<<a[i]<<" ";
    	}
    	cout<<endl;
    }
    



    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    pecl install swoole 安装php扩展swoole
    RBAC
    mysql数据类型
    ES6——Proxy的this问题
    ES6——Proxy实现链式操作
    ES6——Symbol内置值
    ES6——yield例子
    ES6——Generator的next()方法
    ES6——Thunkify用法
    Linux学习day1
  • 原文地址:https://www.cnblogs.com/gxwang/p/4940868.html
Copyright © 2020-2023  润新知