第2次實驗——算法基本功 與 綜合思考


(1)算法基本功——高速排序javascript

    對文件 largeW.txt下載連接)中的數據,應用高速排序算法進行排序。並與冒泡排序、歸併排序進行時間比較。體驗算法複雜度對設計算法的影響。css

如下是高速排序的代碼和執行效果,冒泡排序、歸併排序的代碼和結果請參照個人還有一篇博文:http://blog.csdn.net/wanghaiping1993/article/details/22232293html

package test;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;</p><p>//高速排序
public class QuickSort {  
 
 public static void main(String[] args){  
        
  double start_all = System.currentTimeMillis();
  String path = "txt/largeW.txt";
  ArrayList<Integer> list=read(path); 
  double start = System.currentTimeMillis();
  QuickSort quickSort = new QuickSort();  
        quickSort.quickSort(list,0,list.size()-1); 
        
        double end = System.currentTimeMillis();
        System.out.println("高速排序時間爲: " + (end - start)+"毫秒");
        
        // 寫入txt文件
        double end_all = System.currentTimeMillis();
        write(list);
        System.out.println("寫入完畢");
  System.out.println("總執行時間爲: " + (end_all - start_all)+"毫秒");
    }  
 
 //建立並寫入largeW_quick.txt文件
 public static void write(ArrayList<Integer> list) {
  File f = new File("txt/largeW_quick.txt");
  FileOutputStream fou = null;
  try {
   fou = new FileOutputStream(f, false);// true,設置可追加</p><p>   for (int i = 0; i < list.size(); i++) {
    String s = String.valueOf(list.get(i));
    String a = "" + s + "\t\n";
    // byte []bytes=new byte[1024];
    // 怎樣把string轉換byte數組
    fou.write(a.getBytes());</p><p>   }
  } catch (Exception e) {
   // TODO: handle exception
   e.printStackTrace();
  } finally {
   try {
    fou.close();
   } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
 }
  public void quickSort(ArrayList<Integer> list,int first, int end){  
         if(first<end){  
             int pivot = partition(list,first,end);  
             quickSort(list,first,pivot-1);  
             quickSort(list,pivot+1,end);  
         }  
     }      
    public  int partition(ArrayList<Integer> a, int first , int end){  
        int i = first; int j = end;  
        while(i<j){  
            while(i<j&&a.get(i)<=a.get(j))j--;  
            if(i<j){  
                int temp;  
                temp = a.get(i);  
                a.set(i, a.get(j));  
                a.set(j, temp);  
                i++;  
            }  
            while(i<j&&a.get(i)<=a.get(j))i++;  
            if(i<j){  
                int temp;  
                temp = a.get(j);  
                a.set(j, a.get(i));  
                a.set(i, temp); 
                j--;  
            }  
        }  
            return i ;  
    }  
     
  //讀取文件到int數組
 public static ArrayList read(String path) {
  ArrayList<Integer> list = new ArrayList<Integer>();
  BufferedReader input = null;
  try {
   FileReader in = new FileReader(path);
   input = new BufferedReader(in);
   String ss;
   try {
    while ((ss = input.readLine()) != null) {
     String[] s = ss.split("\r\n");
     for (int i = 0; i < s.length; i++) {
      list.add(Integer.parseInt(s[i].trim())); // 將String s中的內容加入到動態數組中
     }
    }
   } catch (IOException e) {
    // TODO 本身主動生成的 catch 塊
    e.printStackTrace();
   }
   in.close();
   input.close();
  } catch (Exception e) {
   // TODO 本身主動生成的 catch 塊
   e.printStackTrace();
  }</p><p>  return list;
 }
   
} 
結果:

 

排序後的結果:前端

 

(2)經典算法面試題(至少選擇當中1道題並做答,有本身的思考與理解)java

  1. 有A、B、C、D四我的。要在夜裏過一座橋。

    他們經過這座橋分別需要耗時一、二、五、10分鐘,僅僅有一支手電。並且同一時候最多僅僅能兩我的一塊兒過橋。jquery

    請問。怎樣安排。能夠在17分鐘內這四我的都過橋?angularjs

解答: 方法是:思路就是必定要讓1。2分鐘的人來送電筒。web

                         方案一:面試

                             過河去:                   1。2分鐘的人                       總耗時2算法

                             回來送手電筒:         1分鐘的人                             總耗時3

                              過河去:                   5,10分鐘的人                      總耗時13

                             回來送手電筒:         2分鐘的人                             總耗時15

                              過河去:                   1。2分鐘的人                       總耗時17

                             方案二:

                             過河去:                   1。2分鐘的人                       總耗時2

                             回來送手電筒:         2分鐘的人                             總耗時4

                              過河去:                   5,10分鐘的人                      總耗時14

                             回來送手電筒:         1分鐘的人                             總耗時15

                              過河去:                   1。2分鐘的人                       總耗時17

 

 

(4)實習與工做

    上招聘站點(如 51job、智聯招聘)上查看本身感興趣的職位與要求。

做業要求:寫下本身感興趣工做的至少2個崗位名稱(如Java程序猿、搜索引擎project師)、工做崗位詳細要求、自身眼下具有哪些條件、有哪些不足的地方並怎樣彌補。

感興趣的崗位1:JAVA軟件project師

詳細要求:

公司一:

計算機相關專業本科以上學歷
熟練掌握Linux或Windows操做系統
熟悉Internet/Intranet相關技術、數據庫技術
對JAVA/JSP的應用環境有較好的瞭解,有實踐經驗者優先
具備HTML,Javascript的開發基礎,熟悉網頁製做
具備較好的服務意識、溝通能力、責任心強、學習能力強

公司二:

一、本科或以上學歷,計算機相關專業畢業,2年以上Java編程經驗,有B/S軟件開發經驗;
二、熟悉Struts、Spring、Hiberate 等主流開源框架;
三、熟悉Dwr、ExtJS等JavaScript、Ajax框架;
四、熟悉Weblogic、Tomcat等應用server的部署與配置;
五、掌握Sqlserver、Mysql等關係類型數據庫;
六、熟練使用開發工具Eclipse,SVN等。
七、優先考慮熟悉JBPM和EXTJS者。

公司三:

熟練掌握Linux或Windows操做系統
熟悉Internet/Intranet相關技術、數據庫技術
對JAVA/JSP的應用環境有較好的瞭解,有實踐經驗者優先
具備HTML,Javascript的開發基礎,熟悉網頁製做
具備較好的服務意識、溝通能力、責任心強、學習能力強

 

感興趣的崗位2:WEB前端開發project師

詳細要求:

公司一:

一、依據項目需求,高效和高質的完畢代碼編寫;
二、配合開發project師,以確保代碼有效對接;
三、與設計師密切配合,實現符合用戶體驗的交互效果;
任職要求:
一、 精通W3C標準及規範,熟練掌握Html,Css,Javascript;
二、 熟練掌握 jquery;
三、 能夠輕鬆解決各瀏覽器兼容問題。
四、 瞭解使用過 angularjs 或 backbonejs 或 durandaljs 等MV*框架 (一種或以上) 。
五、 對Web技術專研有強烈興趣。有較強的學習能力,良好的溝通能力和團隊合做精神;

優先錄取項:
一、 瞭解或實踐過響應式頁面,具有必定的移動web開發經驗。
二、 熟悉使用bootstrap 或 foundation 等前端框架(一種或以上).
三、 熟悉使用 Sass 或Less 等CSS預處理器(一種或以上)。

公司二:

1。兩年以上站點及終端製做工做經驗。

2,瞭解業界前端製做的新技術,新思路。

3。熟練掌握PHOTOSHOP,FLASH,Dreamweaver等相關軟件,精通HTML+CSS,獨立完畢製做建站全過程。

4。熟練運用HTML5搭建頁面。能流暢實現主流交互及特效以及各瀏覽器兼容。

6,善於溝通。工做主動,積極向上,良好的團隊合做精神和高度的責任感,能承受壓力,有創新精神。保證工做質量。


7,有過大型門戶站點搭建,響應式佈局,JS動態效果實現等經驗優先。


8,應聘時請帶我的做品。

公司三:

1.負責公司站點的編程、設計、改版、更新內容。
2.負責公司產品的界面進行設計、編輯、美化等工做。
3.配合推廣優化作好站點建設;

職位要求:
1.熟悉企業站點程序,具備一年或以上站點開發經驗。
2.精通ASP站點程序開發。掌握ACCESS與MSSQL開發使用;熟悉asp.net 。瞭解PHP+MYSQL;
3.熟練使用Web開發相關的HTML、CSS+DIV、JavaScript、AJAX、DHTML等技術。
4.熟練使用網頁設計軟件;
5.具備良好的且規範的編碼風格,有較強的學習能力、對新技術的追求精神和能夠獨立完畢工做。優秀的團隊溝通協做能力和責任心。

眼下我具有的條件

1,對學習了jsp,對spring,hibernate,struct有所瞭解但不精通。

2.會基本html,javascript,css+div,jquery技術

3.會簡單使用photoshop,dreamweaver,eclipse等工具的使用。

不足:對這些專業知識學的不精通。瞭解皮毛,對於真正就業的要求仍是有差距的。

補充本身的不足:趁現在還有半年在學校的機會。依據公司的要求一一的去強化本身的知識技能,儘量的達到公司就業的要求。另外,利用盡力在暑假找一個實習的機會,而後更加近距離的接觸社會,從而發現本身的不足來改進本身。

相關文章
相關標籤/搜索