具体代码请看:NDKPractice项目的datastructure
1. Ndk中,宏定义Log
打印
1 |
|
2. c++ 中的rand() 随机
1 | // 输出 0 到 49 之间的随机数 |
3. 冒泡排序
思想
:相邻两个数进行比较,如果前面的比后面的大,就进行交换,否则不需要交换。每次循环完毕都会在末尾选出一个最大的数
时间复杂度
:O($n^2$)空间复杂度
:O(1)
看图:
1 | void bubbleSort(int arr[],int len){ |
4. 选择排序
思想
: 遍历找出最小的位置,最后与第一个位置交换。每次循环完毕都会在开始位置选出一个最小的数
时间复杂度
:O($n^2$)空间复杂度
:O(1)
耗费的时间比上边未优化的冒泡排序要少很多
看图:
1 | void selectSort(int arr[],int len){ |
5. 插入排序:
像打扑克牌摸排后插入一样
思想
:每次循环完毕index在(循环次数+1)前面的数都是排好序的
时间复杂度
:最差情况:O($n^2$),最好情况:O(n)空间复杂度
:O(1)
特点:适用于数组中大部分是排好序的数组
,如果大部分都没排好序,那么花费的时间比原来的冒泡排序还多
1 | void insertSort(int arr[],int len){ |
6.两个整数交换不额外开辟新内存
有以下两种方法
1 | void main(String[] args){ |