什么是算法
在我认为,算法是一种快速计算的一种公式,在面对不同的问题时侯,灵活应用不同的算法可以使得问题更容易解决。在我们初学者学习算法时,要将已有的、常用的算法熟悉并掌握,能应用与其他的问题中。学到后期,我们甚至可以自己编写出一个更快、更稳定的算法。
排序算法
1)插入排序
插入排序是指,在一个数组中,从【第二个元素】开始,依次向前面的【元素】一一比较,若【第二个元素】比前面的【元素】大,则将该【元素】往后移,【第二个元素】插入该【元素】的前面,然后指针向后移一位,循环操作,直到最后一个【元素】为止。
2)归并排序
在将几个已排好序的数组,合并成一个数组并排好序这个问题中,归并算法的效率是很高的。
例如,将【8个元素的】数组分成2个【4个元素的】数组,然后再分成4个【2个元素的】数组,然后在各自的数组里有序排列,然后2个【2个元素的】数组合并成1个【4个元素的】数组进行排序,最后将2个【4个元素的】数组合并成1个【8个元素的】数组并排序。
注意:数组中排序的方法不限。
3)冒泡排序
for(int i = 0; i < array.length - 1;i++){
for(int j = 0;j < array.length - 1 - i;j++){
if(array[j] > array[j+1]){
int temp = array[j]; //中间值存储数据
array[j] = array[j+1];
array[j+1] = temp; //中间值赋值
}
}
}
首先将【第一个元素】与【第二个元素】进行比较,若前者大于后者,则进行交换。接着,从【第二个元素】与【第三个元素】比较,同上。直到最大的元素移到最后。 然后第二次循环,重复操作将【第二大的元素】排到【倒数第二】。重复操作即可排好数组。
4)选择排序
for (int i = 0; i < arr.length - 1; i++) {
int minIndex = i;
int min = arr[0];
for (int j = i + 1; j < arr.length; j++) {
if (min > arr[j]) {
min = arr[j]; // 重新给min赋值
minIndex = j; // 重置minIndex的值
}
}
if (minIndex != i) {
arr[minIndex] = arr[i];
arr[i] = min;
}
}
首先,将【第一个元素】与【第二个元素】比较,若前者大于后者则交换位置,循环后【第一个元素】是最小的元素,然后从【第二个元素】开始到【最后一个元素】中选出【最小的元素】。依次循环后就得到了【升序】的数组。