zoukankan      html  css  js  c++  java
  • 我是计算机专业的学生

      今天开了博客园的博客,纪念一下。我是大二的学生,下半年就大三了,很快。这学期的数据库上的真是难受,不过数据结构这门课我很喜欢,学了C,练了些程序,上这课感觉轻松些,学了许多算法,都是牛人想出来的啊,第一个是高德纳的KMP,后来有哈夫曼,Prim,Kruskal,还有荷兰的那位计算机科学家,他的最短路径算法出的还挺晚的。站在巨人的肩膀上学个不停,挺爽,我总是在想,我能不能想出这些算法,像哈夫曼树,感觉道理挺简洁的啊,我还想过,如果把二分查找、哈夫曼树的算法跟我做农的父母亲讲,我想他们一定都能听懂大概的做法,是个人都会二分。上排序那章时,我总是在想,我一定要设计一个O(log(n!))的算法,因为人们在打牌时,就是那么插入的,我花了一个下午把我的想法写出来了,不幸的是,还是有不可避免的“移动元素“,失败。p.s.即使搞出来了,也是和快排一样的时间复杂度,可参见:http://blog.csdn.net/justme0/article/details/7584108。最后把我的想法贴出来吧:

     1 //  哈希+静态链表+折半
     2 #define _CRT_SECURE_NO_WARNINGS
     3 #include <iostream>
     4 using namespace std;
     5 
     6 #define LEN 9
     7 
     8 struct Node {
     9     int data;
    10     int next;
    11 };
    12 
    13 int main(void)
    14 {
    15     freopen("cin.txt", "r", stdin);
    16     Node arr[LEN];
    17     arr[0].data = 0;
    18     arr[0].next = 1;
    19     for (int i = 1; i < LEN; ++i) {
    20         cin >> arr[i].data;
    21         arr[i].next = 0;
    22     }
    23     int h[LEN] = {0};
    24 
    25     for (int i = 1; i < LEN; ++i) {
    26         arr[0].data = arr[i].data;                // 将arr[i]暂存到arr[0]
    27         int low = 1;    
    28         int high = i - 1;
    29         while (low <= high) {                    // 在r[low..high]中折半查找有序插入的位置
    30             int m = (low + high) / 2;            // 折半
    31             if (arr[0].data < arr[h[m]].data)
    32                 high = m - 1;                    // 插入点在低半区
    33             else
    34                 low = m + 1;                    // 插入点在高半区
    35         }
    36         if (low != high + 1)
    37             cout << "Error!" << endl;
    38 
    39         arr[i].next = arr[h[high]].next;
    40         arr[h[high]].next = i;
    41 
    42         for (int j = i; j > high + 1; j--)        //    failed
    43             h[j] = h[j - 1];
    44         h[high + 1] = i;
    45     }
    46 
    47     for (int i = 1; i < LEN; i++)
    48         cout << arr[h[i]].data << endl;
    49 
    50     return 0;
    51 }
    52 
    53 /*
    54 cin.txt
    55 49
    56 38
    57 65
    58 97
    59 76
    60 13
    61 27
    62 49
    63 */

    要去吃饭了,IT民工伤不起啊。。。话说今天搞了一天的百度之星题目,生物钟紊乱了,唉o(︶︿︶)o  ==!

  • 相关阅读:
    Python匹马行天下之_循环
    Hello world!
    Python匹马天下行之python基本语法
    Python匹马行天下之python之父
    Python匹马行天下之面向对象
    Python匹马行天下之运算符
    Python匹马行天下之初识python!
    跨域问题学习记录 CORS解决的2种方法
    Linux系统运维成长记
    关于倒计时new Date().getTime()出现NaN
  • 原文地址:https://www.cnblogs.com/jjtx/p/2532219.html
Copyright © 2011-2022 走看看