练练手:将之前写的冒泡排序改成函数模版实现

本文介绍了一个通用的模板排序算法实现,包括获取数组信息、排序及输出排序后的数组内容。通过三个独立的函数模板实现了对任意类型数据的排序操作。

整个排序设计三个步骤:获取数组信息,排序,输出排好序的数组内容

分别写成三个函数模版

获取数组信息

template <typename T>
void get(T *array, int LEN)
{
	for(int i = 0 ; i < LEN; i++)
	{
		cin >> array[i];
	}
}

排序

template <typename T>
void sort(T *array, int LEN)
{
	T tmp;
	for(int i = 0; i < LEN - 1; i++ )
	{
		for(int j = 0; j < LEN -1 -i; j++)
		{
			if(array[j] > array[j+1])
			{
				tmp = array[j];
				array[j] = array[j + 1];
				array[j+1] = tmp;
			}
		}
	}
}

输出排好序的数组内容

template <typename T>
void put(T *array, int LEN)
{
	for(int i = 0; i < LEN; i++)
	{
		cout << array[i] << " ";
	}
	cout << endl;
}

至此完成

### 超级大脑算法练习题 超级大脑项目是一个综合性的编程实践平台,旨在通过解决实际问题来提升编程能力。以下是一些与超级大脑相关的算法练习题,涵盖常见的算法思想和实现方法[^3]。 #### 练习题 1:数组去重 编写一个函数,接收一个整数数组作为输入,返回一个去重后的数组。 ```python def remove_duplicates(arr): return list(set(arr)) # 示 print(remove_duplicates([1, 2, 3, 2, 4, 1])) # 输出: [1, 2, 3, 4] ``` #### 练习题 2:两数之和 给定一个整数数组 `nums` 和一个目标值 `target`,从数组中找出两个数,使得它们的和为目标值,返回这两个数的索引。 ```python def two_sum(nums, target): num_to_index = {} for i, num in enumerate(nums): complement = target - num if complement in num_to_index: return [num_to_index[complement], i] num_to_index[num] = i # 示 print(two_sum([2, 7, 11, 15], 9)) # 输出: [0, 1] ``` #### 练习题 3:字符串反转 编写一个函数,接收一个字符串作为输入,返回该字符串的反转结果。 ```python def reverse_string(s): return s[::-1] # 示 print(reverse_string("hello")) # 输出: "olleh" ``` #### 练习题 4:斐波那契数列 编写一个函数,接收一个整数 `n` 作为输入,返回第 `n` 个斐波那契数。 ```python def fibonacci(n): if n <= 0: return 0 elif n == 1: return 1 a, b = 0, 1 for _ in range(2, n + 1): a, b = b, a + b return b # 示 print(fibonacci(10)) # 输出: 55 ``` #### 练习题 5:最大子数组和 给定一个整数数组 `nums`,找到一个具有最大和的连续子数组,返回其最大和。 ```python def max_subarray(nums): current_sum = max_sum = nums[0] for num in nums[1:]: current_sum = max(num, current_sum + num) max_sum = max(max_sum, current_sum) return max_sum # 示 print(max_subarray([-2, 1, -3, 4, -1, 2, 1, -5, 4])) # 输出: 6 ``` ### 算法练习的意义 通过解决这些算法问题,可以提高对数据结构和算法的理解,同时培养解决问题的能力。LeetCode等平台提供了丰富的题目资源,是提升编程技能的重要途径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值