什么是原地算法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;
}

