参考数组排序我们可以看一下代码实现
void sort_list(PNODE pHead) { // 数组的排序算法 <-> 链表排序互相对比更好学习排序 // for (i = 0 ; i < len - 1; i++) { // 外围的排序次数 ,没执行完以此只能确定某一最大或最小值 // for (j = i + 1; j < len; j++) { // 内循环的排序次数 ,执行完一次把 n 个元素,对比 n-1 次并换位置 // // if ( a[i] < a[j]) { // t = a[i]; // a[i] = a[j]; // a[j] = t; // } // } // } // 排序的算法有很多种 int len = length_list(pHead); int i , j , t; PNODE p , q; for (i = 0 , p = pHead->pNext; i < len - 1; i++ , p = p->pNext) { // 外围的排序次数 ,没执行完以此只能确定某一最大或最小值 for (j = i + 1 , q = p->pNext; j < len; j++ , q = q->pNext) { // 内循环的排序次数 ,执行完一次把 n 个元素,对比 n-1 次并换位置 if (p->data > q->data) { // 比较两个节点数值,并换位置 t = p->data; p->data = q->data; q->data = t; } } } return; } 小结和感悟数组和链表内部是不一样的,但是他们的排序的思路确实一样的,比如冒泡。
从排序的思路上都是前一个跟后一个元素比较,把小的放到前面,以此类推
算法:
狭义的算法:与数据的存储方式密切相关
广义的算法:与数据的存储方式无关
泛型:利用某种技术达到同一种效果:不同的存储方式,执行的方式是一样的
如何学习算法?
看真题流程
分析每个语句的功能
试数
自己搞不定,就去看答案,把答案弄懂,实在不行就先记住答案。
本文从数据结构的线性结构开始,分析了两种线性结构【数组】和【链表】,
进而逐步讲解和自己手动实现了数组和链表。
通过这两个结构,在讲解过程中也代入了一写算法的基础知识,希望能对大家有所帮助!