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;
}



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

posted on   andywangguanxi  阅读(270)  评论(0编辑  收藏  举报
编辑推荐:
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
阅读排行:
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· 语音处理 开源项目 EchoSharp
· 《HelloGitHub》第 106 期
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 使用 Dify + LLM 构建精确任务处理应用
< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示