虽然,同时进行着数据库,C#实战项目,但始终明白,尽管当前这些应用类的可能会占据白天的大部分时间,但要想在软件这一块有长足的进展, 算法与数据结构始终是不可忽略的存在.这个过程是一个长期的过程,也是一个不可轻易放弃的过程,不放弃,就是不放弃自己的爱好,不放弃自己.坚持学习,总有一天,会达到自己的目标.
C、C++、C#、JAVA除去语法特性的东西,其实在算法这一块,应该是没有什么障碍的。偶有所得,记录下来,将来看看,也算是一种不忘初衷的体验吧!学习最重要的,还是要动手,只有亲自动手敲一下,才知道自己哪里是真正的不懂!
以下是用JAVA实现冒泡,插入,选择排序
/**
* 〈一句话功能简述〉<br>
* 〈选择排序〉
*
* @author Administrator
* @create 2019/4/23
* @since 1.0.0
*/
public class SelectSort {
public static void SelectSort(int[] arr) {
if (arr == null || arr.length < 2) return;
for (int i = 0; i < arr.length - 1; i++) {//i的初值(数组的下标)代表排序好的下标
int MinIndex = i;
for (int j = i + 1; j < arr.length; j++) {//拿这个数组的下标去比较剩下的全数组下标,找出最小的下标
MinIndex = arr[j] < arr[MinIndex] ? j : MinIndex;
}
swap(arr , i , MinIndex);
}
}
/**
* 〈一句话功能简述〉<br>
* 〈bubble〉冒泡排序
*
* @author Administrator
* @create 2019/4/23
* @since 1.0.0
*/
public class BubbleSort {//看下arr.length的值,是数组的长度,不代表下标
public static void BubbleSort(int[] arr) {
if (arr == null || arr.length < 2) return;
for (int i = arr.length - 1; i > 0; i--) {//两两交换,所以第一次是比较次数最多的,顺序是不能颠倒的
for (int e = 0; e < i; e++) {
if (arr[e] > arr[e + 1]) swap(arr , e , e + 1);
}
}
}
/**
* 〈一句话功能简述〉<br>
* 〈insertsort插入排序〉
*
* @author Administrator
* @create 2019/4/23
* @since 1.0.0
*/
public class InsertSort {
public static void Insertsort(int[] arr) {
if (arr == null || arr.length < 2) return;
for (int i = 1; i < arr.length; i++)//先放一个数,再依次放入其他数,所以起始值为1
for (int j = i - 1; j >= 0 && arr[j] > arr[j + 1]; j--) {//始终比较j和j+1, 依次往前看
swap(arr , j , j + 1);
}
}
--------------------------以下是测试的结构------------------------------------------
public class SelectSort {
public static void SelectSort(int[] arr) {
if (arr == null || arr.length < 2) return;
for (int i = 0; i < arr.length - 1; i++) {//i的初值(数组的下标)代表排序好的下标
int MinIndex = i;
for (int j = i + 1; j < arr.length; j++) {//拿这个数组的下标去比较剩下的全数组下标,找出最小的下标
MinIndex = arr[j] < arr[MinIndex] ? j : MinIndex;
}
swap(arr , i , MinIndex);
}
}
public static void swap(int[] arr , int i , int j) {
int temp;
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
public static int[] generaterRodomArray(int maxSize , int maxValue) {
int[] arr = new int[(int) ((maxSize + 1) * Math.random())];//创建一个从0到maxSize+1
for (int i = 0; i < arr.length; i++) {
arr[i] = (int) ((maxValue + 1) * Math.random());
}
return arr;
}
public static void printArr(int[] arr) {
if (arr == null) return;
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
public static void main(String[] args) {
int maxvalue = 100;
int maxsize = 100;
int[] arr = generaterRodomArray(maxsize , maxvalue);
printArr(arr);
SelectSort(arr);
printArr(arr);
}
}