算法练习
sun10081
这个作者很懒,什么都没留下…
展开
-
算法练习 (1)单链表反转
public ListNode ReverseList(ListNode head) { if (head == null) { return null; } ListNode pre = null; ListNode next = null; while (head != null) { next = head.next; head.next = ...原创 2018-05-14 00:16:38 · 281 阅读 · 0 评论 -
算法练习 (2) 快速排序
算法描述快速排序(Quicksort)是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。递归版: /*递归写法 10.3 最好、平均时间复杂度O(NlogN) 空间复杂度O(logN)...原创 2018-05-14 00:49:56 · 205 阅读 · 0 评论 -
算法练习 (3) 杨辉三角
public static void main(String[] args){ Scanner s = new Scanner(System.in); int n = s.nextInt(); //输入行数 int[][] a = getTriangle(n); for (int i = 0; i < a.length; i++) { for (int j = 0...原创 2018-05-21 00:34:52 · 184 阅读 · 0 评论 -
算法练习 (4) 归并排序
public static void merge(int a[], int low, int mid, int high){ int temp[] = new int[high - low + 1]; int i = low; //左指针 int j = mid + 1; //右指针 int k = 0; //把较小的数先移到新数组里 while (i<=mid &...原创 2018-05-29 22:51:34 · 154 阅读 · 0 评论 -
算法练习 (5) 选择排序
public static void selectSort(int a[]){ for (int i = 0; i < a.length; i++) { int temp = a[i]; int flag = i; //将当前下标定义为最小值下标 for (int j = i+1; j < a.length; j++) { if (a[j] < ...原创 2018-05-29 23:23:18 · 110 阅读 · 0 评论 -
算法练习 (6) 希尔排序
public static void shellSort(int[] data){ int j = 0; int temp = 0; for (int i = data.length/2; i>0; i/=2) { for (int k = i; k < data.length; k++) { temp = data[k]; for (j = k-i;...原创 2018-05-31 00:08:20 · 250 阅读 · 0 评论 -
算法练习 (7) 插入排序
public static void insertSort(int[] a) { int i, j, insertNote; for (i = 0; i < a.length; i++) { insertNote = a[i]; j = i-1; while (j>=0 && insertNote<a[j]){ a[j+1] = ...原创 2018-05-31 12:42:32 · 170 阅读 · 0 评论 -
算法练习 (8) 01背包问题
题目描述给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数。当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案。样例输入描述:输入为两行: 第一行为两个正整数n(1 ≤ n ≤ 1000),sum(1 ≤ sum ≤ 1000) 第二行为n个正整数A[i](32位整数),以空格隔开。输出描述:输出所求的方案数示例1输5 15 5 5 10 2 ...原创 2018-07-02 09:59:02 · 254 阅读 · 0 评论