数据结构与算法
火云咩哈哈
希望跟大家分享的同时我们一起进步!
展开
-
Java实现单链表反转
1、node类 public class Node { private int data; private Node next; public Node(int data) { this.data = data; } public Node getNext() { return next; } public void setNext(Node next) {原创 2017-05-02 17:05:56 · 308 阅读 · 0 评论 -
冒泡排序之Java实现
冒泡法思路(由小到大排序):给定的整形数组的两个相邻数据进行比较,大的数组移动到后边;依次类推,遍历整个数组执行前面的操作。 实现: public static void bubbleSort(int [] arr){ for(int i = 0 ; i < arr.length ; i++){ for(int j = 1 ; j < arr.length - i ; j++原创 2017-05-04 23:27:48 · 293 阅读 · 0 评论 -
插入排序之Java实现
基本思想:每一个待排序的记录,按照其大小插入到前面已经排好序的子数组中,直至数组的全部记录都插入完成。 代码实现: public static void insertSort(int [] arr){ for(int i =1 ; i < arr.length ; i++){ for(int j = i-1; j>=0 ; j--){ if(arr[j] > arr[j+1]原创 2017-05-07 19:33:07 · 238 阅读 · 0 评论 -
选择排序之Java实现
实现思想: 选择排序的基本思想是每一趟在n-i+1(i =1,2,3...,n-1)个记录中选取关键字最小的记录作为有序序列的第i 个记录。 代码实现: public static void chooseSort(int [] arr){ for(int i = 0 ; i < arr.length ; i++){ for(int j = i+1 ; j < arr.length原创 2017-05-07 22:14:18 · 231 阅读 · 0 评论 -
希尔排序之Java实现
希尔排序思想: 希尔排序其实就是将一个数组分段进行插入排序,最后再将分段序列组合在一起进行大的插入排序。 也即:希尔排序是首先将数组分成若干子数组(一般子数组的个数是n/2或者n/m,n是数组长度,m是分隔间距),然后每个子数组进行插入排序;再缩减增量(一般缩减增量表达式是 k/2,k是上一次执行插入排序结束之后的子数组的长度),进行插入排序;直到子数组足够小,那么再对总的数组进行插入排序。因原创 2017-05-08 00:14:44 · 991 阅读 · 0 评论 -
快速排序之Java实现
快速排序思想: 从数组中挑选一元素作为基数(一般选数组第一个数字),然后通过排序,将比此数大的排到它 的左边,比它小的排到右边;然后再分别对左右两边的子数组进行相应排序,直到子数组的长度是1 ,排序结束。 举例说明:一组数:arr = {5,9,1,3,52,13,2,8,4} 选择第一个数字,5,作为基数,i = 0,j=8; (1)从数组后边开始,4比5小,那么将4,赋值给arr[0原创 2017-05-08 22:24:00 · 263 阅读 · 0 评论 -
归并排序之Java实现
归并排序思路:现先待排序数组划分成两个数组,然后再划分,直至划分后的子数组只有一个元素(一个元素的数组既是有序数组),然后再两两合并(按照顺序合并),最终形成一个完整的有序数组。 所以归并排序核心有两个:两个数组合并排序成一个有序数组;一个数组怎么拆分成N个子数组。 代码实现: public static void merge(int [] arr) throws Exception{原创 2017-05-08 22:37:58 · 261 阅读 · 0 评论