排序算法(Python和C++)

常见排序算法(Python和C++)

一、比较类

1.冒泡排序

python:

lst=[1,5,6,1,7]
#一共n-1趟
for i in range(len(lst)-1,0,-1):
#每趟需要检查进行交换的位置:如第一趟时0~n-2下标
    for j in range(i):
        if lst[j]>lst[j+1]:
            lst[j],lst[j+1]=lst[j+1],lst[j]
print(lst)

C++:

#include<iostream>
using namespace std;
int main()
{
	int a[5] = { 1,5,6,1,7 };
	int i, j, tmp,length;
	length = sizeof(a) / sizeof(a[0]);
	for (i=0; i < length ; i++)
	{
		cout << a[i] << ' ';
	}
	for (i=0; i <length-1; i++)
	{
		for (j = 0; j < length - 1 - i; j++)
		{
			if (a[j] > a[j + 1])
			{
				tmp = a[j];
				a[j] = a[j + 1];
				a[j + 1] = tmp;
			}		
		}
	}
	cout << endl;
	for (i=0; i < length ; i++)
	{
		cout << a[i] << ' ';
	}
	system("pause");
	return 0;
}

2.选择排序

python:

#记录最小值的索引,每趟遍历结束进行一次交换
for i in range(len(lst)-1):
    index = i
    for j in range(i+1,len(lst)):
        if lst[index]>lst[j]:
            index=j
    lst[i],lst[index]=lst[index],lst[i]

C++:

//进行n-1次交换
	for (i = 0; i < length - 1; i++)
	{
		//记录i处索引,记此处值为初始最小值
		min_index = i;
		//重点:从每趟从i+1下标开始到n-1
		for (j = i+1; j< length; j++)
		{
			if (a[min_index] > a[j])
			{
				min_index = j;
			}
		}
		tmp = a[i];
		a[i] = a[min_index];
		a[min_index] = tmp;
	}

3.插入排序

python:

for i in range(1,len(lst)):
    #记录需要插入的数据与索引
    currentval=lst[i]
    index=i
    while lst[index-1]>currentval and index>=1:
        lst[index]=lst[index-1]
        index-=1
    #只插入一次——与冒泡算法区别每趟比较后都需要交换
    lst[index]=currentval

C++:

	for (i = 1; i < length ; i++)
	{
		currentval = a[i];
		index = i;
		//跳出循环条件:1.比较值<插入值;2.插入值索引<1
		while (index>0&&a[index-1]>currentval)
		{
			a[index] = a[index - 1];
			index -= 1;
		}
		a[index] = currentval;	
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值