我的排序算法设计

因我皈依于观音殿,又屡蒙观音菩萨感应道交排忧解难,为感恩纪念观世音菩萨的慈悲(慈能与乐,悲能拔苦),又观世音菩萨别一名号为海潮音,海潮与我的算法特点很形象.
            for (int i = 0; i < arr.Length - 1; i++)
            {
                if (arr[i] > arr[i + 1])
                {
                    temp = arr[i + 1];
                    for (int j = i; j >= 0; j--)
                    {
                        if (arr[j] > arr[j + 1])
                        {
                            arr[j + 1] = arr[j];
                            arr[j] = temp;
                        }
                        else break;
                    }
                }
            }
            Console.WriteLine("\n海潮排序数组:");
            foreach (int item in arr)
                Console.Write(item + " ");

同时也感谢35楼Ilovecoding贡献.

c++模板写法

template <class 类模板形参>
void 海潮排序(类模板形参 数组[], int 量)
{
	类模板形参 临时 = 0;
	for (int i = 0; i < 量 - 1; i++)
	{
		if (数组[i] > 数组[i + 1])
		{
			temp = 数组[i + 1];
			for (int j = i; j >= 0; j--)
			{
				if (数组[j] > 数组[j + 1])
				{
					数组[j + 1] = 数组[j];
					数组[j] = 临时;
				}
				else break;
				排序次++;
			}
		}
		排序次++;
	}
};

 

void 显示数组(模参 数组[], 模参 参)
{
	for (int 序 = 0; 序 < 参; 序++)std::cout << 数组[序] << " ";
	std::cout << 排序次 << std::endl;
}
 
	double bbb[] = { 9.1, 6.2, 3.3, 2.4, 5.5, 8.6, 7.7, 4.8, 1.9 };
	int 量 = sizeof(bbb) / sizeof(bbb[0]); 排序次 = 0;
	海潮排序(bbb, 量); 显示数组(bbb, 量);

	char ccc[] = {'p','i','y','f','d','s','k','h','x'};
	int 量 = sizeof(ccc) / sizeof(ccc[0]); 排序次 = 0;
	海潮排序(ccc, 量); 显示数组(ccc, 量);
一个循环内完成排序:
        static void 以进为退(int[] 数据)
        {
            int 总量 = 数据.Length, 交换 = 0, 数量 = 0, 跟 = 0;
            do
            {
                if (数据[数量] < 数据[跟])
                {
                    交换 = 数据[数量]; 数据[数量] = 数据[跟]; 数据[跟] = 交换;
                    while (跟 > 0 && 数据[跟] < 数据[跟 - 1])
                    {
                        交换 = 数据[跟]; 数据[跟] = 数据[跟 - 1]; 数据[跟-- - 1] = 交换;
                    }
                }
                跟 = 数量;
            } while (总量 > ++数量);
        }
 
	/*c语言 选择排序法哪写的不对*/
	int a[10] = { 4, 2, 7, 8, 9, 10, 11, 24, 5, 6 };
	int i, j, t;
	for (i = 0; i < 9; i++)
	{
		for (j = i + 1; j<10; j++)
		{
			if (a[i]>a[j])
			{
				t = a[i];
				a[i] = a[j];
				a[j] = t;
				i--;/*这种排序法特点:把交换过的值拿来比较后面是否还有比它小的值直到没有才进入下一个元素*/
				break;
			}
		}
	}
	for (i = 0; i <= 9; i++)
		printf_s("%2d\n", a[i]);

不知道为什么想起这个排序就觉得好有趣想发笑,哈哈......当用{10,9,8,7,6,5,4,3,2,1}作测试把断点下在break;看交换时,哈哈......太可爱了,哈哈......
 
用VB循环写法替换上面的循环写法:省得有人还要问不同语言的
        For Each i As Integer In aa

        Next
        For 序 As Integer = 1 To 10 Step 1

        Next
输入10个数排序求平均值
int shuzu[10], pingjun(0), temp(0);
std::cin >> shuzu[0] >> shuzu[1] >> shuzu[2] >> shuzu[3] >> shuzu[4] >> shuzu[5] >> shuzu[6] >> shuzu[7] >> shuzu[8] >> shuzu[9];
for (int i = 0; i < 9; i++)
{
	if (shuzu[i] > shuzu[i + 1])
	{
		temp = shuzu[i + 1];
		for (int j = i; j >= 0; j--)
		{
			if (shuzu[j] > shuzu[j + 1])
			{
				shuzu[j + 1] = shuzu[j];
				shuzu[j] = temp;
			}
			else break;
		}
	}
	pingjun += shuzu[i];
}
for (int i = 0; i < 10; i++)std::cout << shuzu[i] <<" ";
std::cout << endl;
for (int i = 9; i >= 0; i--)std::cout << shuzu[i] << " ";
std::cout << endl << pingjun / 10;







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值