【C++数据结构和算法面试题】

一、复杂度的概念

复杂度是衡量算法的质量优劣的标准,一般可分为“时间复杂度”、“空间复杂度”。

【题5】 编程实现选择排序
选择是指在每次排序时,选择最大或者最小项,将其放入适当的位置上,反复操作,知道所有的数据排序完成为止。
例如:一个班级学生排队,先将最高的学生排在队首,然后在其他学生中再挑出最高的一个,排在第二的位置,依次类推,直到排完为止。

/*选择排序*/
void SelectSortArray(int arr[], n)
{
	for(int i=0; i<n-1; i++)
	{
		int index = i;   //
		for(int j=i+1; j < n; j++)    //找出最小元素的下标
		{
			if(arr[j] < arr[index])
			{
				index = j;
			}
		}
		int temp = arr[index];
		arr[index] = arr[i];
		arr[i] = temp;
	}
}

【题6】 编程实现冒泡排序

顾名思义,冒泡排序法,就是把要排序的一组数据中的元素当成一个一个气泡,每次比较相邻两个相邻“气泡”的"轻重’,“气泡”较重的往下"沉",轻的往上”浮“。
原理:从第一个数开始,依次往后进行相邻两个数之间的比较,如果前面的数比后面的数大就交换这两个数的位置,如果前面的数较小或两者一样大,就不作处理。

/*冒泡排序*/
void BubbleSortArray(int arr[],n)
{
	for(int i = 0; i < n-1; i++)
	{
		for(int j = 0; i < n-1-i; j++)
		{
			if(arr[j] < arr[j+1])
			{
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
			}
		}
	}
}

【题7】 直接插入排序

/*插入排序*/
void insertSortArray(int arr[],n)
{
	int curEle, preIndex; //记录当前待排序元素和前一个元素的下标
	for(int i=0; i < n; i++)
	{
		preIndex = i - 1;
		curEle = arr[i];
		while(preIndex >=0 && arr[preIndex] > curEle)
		{
			arr[preIndex+1] = arr[preIndex];  //移动元素
			preIndex--;
		}	
		//将待排序元素插入新的位置
		arr[preIndex+1] = curEle;	
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值