蒋智昊的博客

蒋智昊的博客

关于Java排序算法-归并排序(Merge Sort)

关于Java排序算法-归并排序(Merge Sort)

二路归并排序的基本思想:设 n 个待排记录,看成是 n 个有序的子序列,每个子序列的长度为 1 ,对此进行两两归并,得到 n/2 个长度为 2 或 1 的有序子序列;再继续两两归并,得到 n/4 个有序子序列,重复进行直至得到一个长度为 n 的有序序列为止。

public class MergeSort {

public static void main(String[] args) {

//int[] arr = { 9, 8, 7, 6, 5, 4, 3, 2, 1 };

Android Studio 无法预览xml布局视图 Failed to load AppCompat ActionBar with unknown error

Android Studio 无法预览xml布局视图 Failed to load AppCompat ActionBar with unknown error

Failed to load AppCompat ActionBar with unknown error

修改styles.xml,增加Base。

<resources>

<!– Base application theme. –>

<style name=”AppTheme” parent=”Base.Theme.AppCompat.Light”>

<!– Customize your theme here. –

关于Swift 泛型

// 泛型

// 定义一个交换两个变量的函数

func swap<T>(_ a: inout T, _ b: inout T) {

let temp = a

a = b

b = temp

}

var numb1 = 77

var numb2 = 33

print(“交换前数据: \(numb1) 和 \(numb2)”)

swap(&numb1, &numb2)

print(“交换后数据: \(numb1) 和 \(numb

关于Java排序算法-堆排序(Heap Sort)

关于Java排序算法-堆排序(Heap Sort)

堆排序是利用堆的特性进行排序的过程。

堆排序:输出堆顶的最小(大)值后,使剩余的n-1个元素序列重新再建成堆,则可得到原序列的次小(大)值。反复进行可得到一个有序序列,整个过程称为堆排序。

堆排序分为两个步骤:

根据初始输入数据,形成初始堆;

通过一系列的记录交换和重新调整堆进行排序。

public class HeapSort {

// 主函数

public static void main(String[] args) {

int[] arr = { 2

关于Java排序算法-希尔排序(Shell Sort)

关于Java排序算法-希尔排序(Shell Sort)

希尔排序又称“缩小增量排序”,是通过对直接插入排序进行改进得到的一种插入排序法。

基本思想:将整个待排序列分割成几个较小的子序列分别进行直接插入排序,待整个序列中的记录基本有序时,再对整个记录序列进行一次直接插入排序。

过程:设待排序列有n个记录, 首先取一个整数d1< n 作为步长, 将全部记录分为d1个子序列, 所有距离为d1的记录放在同一个子序列中, 在每个子序列中分别施行直接插入排序。然后缩小步长 , 如取 d2=d1/2,重复上述的子序列划分和排序工作。直到最后取dt=1

关于Java排序算法-快速排序(Quick Sort)

关于Java排序算法-快速排序(Quick Sort)

快速排序是对气泡排序的一种改进。

基本思想:通过一趟排序将待排序列分割成独立的两部分,其中一部分元素的排序码均比另一部分的排序码小,分别对这两部分继续进行排序,直至整个序列有序。

具体过程:设待排序列为 A[s..t],选取任意一个元素作为支点(基准元素,一般就选A[s]),然后从区间两端向中间依次比较元素,一旦发现前半部分有元素大于基准元素,后半部分有元素小于基准元素,则交换这两个元素,所有元素比较一遍后,最后把基准元素交换到两部分的中间,使得所有比基准元素大的都排在此基准元素的后面;