什么是原地算法In-place Algorithm
时间:2020-01-09 10:35:37 来源:igfitidea点击:
原地算法是一种不使用任何额外空间来转换输入的算法。它使用输入数据所用的相同空间,并在该空间本身中修改数据以产生输出。但是,可以为辅助变量保留少量的额外存储空间。
冒泡排序,选择排序,插入排序等排序算法都是原地排序算法。
合并排序是非原地或者原地排序算法的一个示例。
这是冒泡排序的代码片段,显示了如何使用输入数组本身来产生输出。在比较元素之后在输入数组中使用,如果需要,可以进行交换。它仅使用多余的空间作为temp变量。
int[] arr = {61, 34, 10, 0, 15, 112, 53, 78, 39, 45}; int n = arr.length; for(int i = 0; i < n; i++){ for(int j = 0; j < (n - i - 1); j++){ if(arr[j] > arr[j+1]){ int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } }
原地算法的另一个简单示例是反转数组。
int[] arr = {61, 34, 10, 0, 15, 112, 53, 78, 39, 45}; int n = arr.length; for (int i = 0; i < n / 2; i++) { int temp = arr[i]; arr[i] = arr[n - 1 - i]; arr[n - 1 - i] = temp; }