恋上数据结构与算法 算法与数据结构

数据结构与算法的重要性,是众所周知的,作为开发人员都想攻克它,但大部分人坚持一下都放弃了。可能是因为知识点太多、不知从何开始学起,也可能是没找对学习方法,也可能是没找到好的学习资料。如果你还在迷茫中,相信本课程能够帮到你,是你彻底掌握数据结构与算法的美好开始。

恋上数据结构与算法 算法与数据结构_第1张图片

恋上数据结构与算法 算法与数据结构_第2张图片 

LZW 压缩算法
string = "thisisthe"
dictionary = {chr(i):i for i in range(97,123)}
 
last = 256
p = ""
result = []
 
for c in string:
    pc = p+c
    if pc in dictionary:
        p = pc
    else:
        result.append(dictionary[p])
        dictionary[pc] = last
        last += 1
        p = c
 
if p != '':
    result.append(dictionary[p])
 
print(result)
以上代码运行结果为:

[116, 104, 105, 115, 258, 256, 101]

 

LZW 解压缩算法
dictionary = {i:chr(i) for i in range(97,123)}
last = 256
arr = [97, 97, 98, 256, 258, 257, 259]
 
result = []
p = arr.pop(0)
result.append(dictionary[p])
 
for c in arr:
    if c in dictionary:
        entry = dictionary[c]
    result.append(entry)
    dictionary[last] = dictionary[p] + entry[0]
    last += 1
    p = c
 
print(''.join(result))
以上代码运行结果为:

aabaabaabaab
一、概述:
  
本文给出常见的几种排序算法的原理以及 Java 实现,包括常见的简单排序和高级排序算法,以及其他常用的算法知识。

简单排序:冒泡排序、选择排序、插入排序
高级排序:快速排序、归并排序、希尔排序
相关算法知识:划分、递归、二分查找
二、冒泡排序:
(1)原理:

1、从第一个数据开始,与第二个数据相比较,如果第二个数据小于第一个数据,则交换两个数据的位置。
2、指针由第一个数据移向第二个数据,第二个数据与第三个数据相比较,如果第三个数据小于第二个数据,则交换两个数据的位置。
3、依此类推,完成第一轮排序。第一轮排序结束后,最大的元素被移到了最右面。
4、依照上面的过程进行第二轮排序,将第二大的排在倒数第二的位置。
5、重复上述过程,没排完一轮,比较次数就减少一次。
(2)例子:

待排序数据:7, 6, 9, 8, 5,1

第一轮排序过程:

指针先指向7,7和6比较,6<7,交换6和7的位置,结果为:6,7,9,8,5,1
指针指向第二个元素7,7和9比较,9>7,不用交换位置,结果仍为:6,7,9,8,5,1
指针指向第三个元素9,比较9和8,8<9,交换8和9的位置,结果为:6,7,8,9,5,1
指针指向第四个元素9,比较9和5,5<9,交换5和9,结果为:6,7,8,5,9,1
指针指向第五个元素9,比较9和1,1<9,交换1和9的位置,结果为6,7,8,5,1,9
第一轮排序结束后,最大的数字9被移到了最右边。

进行第二轮排序,过程同上,只是由于最大的9已经放在最右边了,因此不用在比较9了,少了一次比较,第二轮结束的结果为:6,7,5,1,8,9

第三轮结果:6,5,1,7,8,9

第四轮比较结果:5,1,6,7,8,9

第五轮比较结果:1,5,6,7,8,9

最终排序结果为:1,5,6,7,8,9,由上可知N个数据排序,需要进行N-1轮排序;第i轮排序需要的比较次数为N-i次。

(3)编码思路:

需要两层循环,第一层循环i表示排序的轮数,第二层循环j表示比较的次数。

(4)代码实现:
实例
package com.test.insertsort;
/**
 * 选择排序
 * @author Administrator
 *
 */
public class ChooseSort {
    private int[] array;
    private int length;
    
    public ChooseSort(int[] array){
        this.array = array;
        this.length = array.length;
    }
    
    /**
     * 打印数组中的所有元素
     */
    public void display(){
        for(int i: array){
            System.out.print(i+" ");
        }
        System.out.println(); 
    }
    
    /**
     * 选择排序算法
     */
    public void chooseSort(){
        for(int i=0; i

链接:https://pan.baidu.com/s/1O8gMQOCvyKh7xxkOm4APkw 
提取码:8ie5 
复制这段内容后打开百度网盘手机App,操作更方便哦

有不懂的一起交流学习哦,vx:IT_Promise

你可能感兴趣的:(恋上数据结构与算法 算法与数据结构)