|
Bubble Sort
Bubble sort is a simple and well-known sorting algorithm. It is used in practice once in a blue moon and its main application is to make an introduction to the sorting algorithms. Bubble sort belongs to O(n2) sorting algorithms, which makes it quite inefficient for sorting large data volumes. Bubble sort is stable and adaptive.
Algorithm
- Compare each pair of adjacent elements from the beginning of an array and, if they are in reversed order, swap them.
- If at least one swap has been done, repeat step 1.
You can imagine that on every step big bubbles float to the surface and stay there. At the step, when no bubble moves, sorting stops. Let us see an example of sorting an array to make the idea of bubble sort clearer.
Example. Sort {5, 1, 12, -5, 16} using bubble sort.

Complexity analysis
Average and worst case complexity of bubble sort is O(n2). Also, it makes O(n2) swaps in the worst case. Bubble sort is adaptive. It means that for almost sorted array it gives O(n) estimation. Avoid implementations, which don't check if the array is already sorted on every step (any swaps made). This check is necessary, in order to preserve adaptive property.
Turtles and rabbits
One more problem of bubble sort is that its running time badly depends on the initial order of the elements. Big elements (rabbits) go up fast, while small ones (turtles) go down very slow. This problem is solved in the Cocktail sort.
Turtle example. Thought, array {2, 3, 4, 5, 1} is almost sorted, it takes O(n2) iterations to sort an array. Element {1} is a turtle.

Rabbit example. Array {6, 1, 2, 3, 4, 5} is almost sorted too, but it takes O(n) iterations to sort it. Element {6} is a rabbit. This example demonstrates adaptive property of the bubble sort.

Code snippets
There are several ways to implement the bubble sort. Notice, that "swaps" check is absolutely necessary, in order to preserve adaptive property.
Java
public void bubbleSort(int[] arr) {
boolean swapped = true;
int j = 0;
int tmp;
while (swapped) {
swapped = false;
j++;
for (int i = 0; i < arr.length - j; i++) {
if (arr[i] > arr[i + 1]) {
tmp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = tmp;
swapped = true;
}
}
}
}
Python
def bubbleSort(L) :
swapped = True;
while swapped:
swapped = False
for i in range(len(L)-1):
if L[i]>L[i+1]:
temp = L[i]
L[i] = L[i+1]
L[i+1] = temp
swapped = True
|
摘要: 關(guān)于二分查找的原理互聯(lián)網(wǎng)上相關(guān)的文章很多,我就不重復(fù)了,但網(wǎng)絡(luò)的文章大部分講述的二分查找都是其中的核心部分,是不完備的和效率其實(shí)還可以提高,如取中間索引使用開(kāi)始索引加上末尾索引的和除以2,這種做法在數(shù)字的長(zhǎng)度超過(guò)整型的范圍的時(shí)候就會(huì)拋出異常,下面是我的代碼,其中可能有些地方?jīng)]考慮到或有什么不足 閱讀全文
Java處理Excel數(shù)據(jù)有很多方式,如Apache的POI或JXL等.
我首先給出一個(gè)Excele數(shù)據(jù)的讀入的方式(使用的是jxl.jar包)
package com.ccniit.readexcel;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

 public class ExcelHander {

 public static String[] getColName(String desc) {
InputStream is = null;
String[] colNames = null;
 try {
is = new FileInputStream(new File(desc));
Workbook wb = Workbook.getWorkbook(is);
Sheet sheet = wb.getSheet(0);
int cols = sheet.getColumns();
colNames = new String[cols];
 for (int i = 0; i < cols; i++) {
colNames[i] = sheet.getCell(i, 0).getContents();
// System.out.println("列名: " + colNames[i]);
}
is.close();
 } catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
 } catch (BiffException e) {
// TODO Auto-generated catch block
e.printStackTrace();
 } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return colNames;

}

 public List<Map<String, Object>> readExcel(String desc) {
List<Map<String, Object>> datas = null;
 try {
InputStream is = new FileInputStream(new File(desc));
Workbook wb = Workbook.getWorkbook(is);
 if(wb == null) {
return null;
}
Sheet sheet = wb.getSheet(0);
int cols = sheet.getColumns();
int rows = sheet.getRows();
datas = new ArrayList<Map<String, Object>>();
 for (int i = 1; i < rows; i++) {
Map<String, Object> data = new HashMap<String, Object>();
 for (int j = 0; j < cols; j++) {
String key = sheet.getCell(j, 0).getContents();
// System.out.println("key:" + key);
Object value = (Object) sheet.getCell(j, i).getContents();
// System.out.println("value:" + value.toString());
data.put(key, value);
}
datas.add(data);
}
is.close();
wb.close();
 } catch (FileNotFoundException e) {
e.printStackTrace();
 } catch (BiffException e) {
e.printStackTrace();
 } catch (IOException e) {
e.printStackTrace();
}
return datas;
}

}

再見(jiàn)了我的 2008
謹(jǐn)以此文獻(xiàn)給我們的2008年--
但愿你的點(diǎn)點(diǎn)滴滴永存于我們心間....
再見(jiàn)我的2008--楊天寧
還有一點(diǎn)點(diǎn)的時(shí)間
讓我們用來(lái)回憶
還有一點(diǎn)點(diǎn)的時(shí)間
可以用來(lái)哭泣
可以不管得到還是失去
輕輕合上眼睛
緊緊抱著它啊
時(shí)間這樣飛逝
我們就這樣長(zhǎng)大
我們哭著笑著唱著
在勇敢地成長(zhǎng)
想想身邊每個(gè)朋友
你們是否不再孤單害怕
聽(tīng)時(shí)間開(kāi)始倒記
這樣隨音樂(lè)大聲唱起
再見(jiàn)我的2008年
好懷念你在我的身邊
當(dāng)昨天它一點(diǎn)點(diǎn)走遠(yuǎn)
我知道我們不能回到從前
再見(jiàn)我的2008年
我記得你的每一個(gè)瞬間
無(wú)論明天悲喜或是改變
只希望我們都能快樂(lè)一點(diǎn)
鐘聲它已走遠(yuǎn)...
2008,這一年發(fā)生了太多太多的事,或許有些事你已經(jīng)淡忘,但也有些事會(huì)長(zhǎng)存于你的心間,難以磨滅.
在2008年即將離我們而去之際,讓我們回首一下自己這一年所經(jīng)歷過(guò)的點(diǎn)點(diǎn)滴滴.在這一年里,我們哭過(guò),笑過(guò),痛苦過(guò),掙扎過(guò),努力過(guò),認(rèn)真過(guò),也跌到過(guò),爬起過(guò),遺憾過(guò)...無(wú)論你在這一年里是達(dá)到了自己的目標(biāo),實(shí)現(xiàn)了夢(mèng)想,還是犯下了不可彌補(bǔ)的錯(cuò)誤,讓自己身邊的人受到傷害,這一切都將過(guò)去,因?yàn)?2008年在你生命中只有一次而已,而它正逐漸離我們而去...
年初的南方大雪災(zāi)(家人因?yàn)榈鼗?br />
手足口病肆虐
藏獨(dú)事件
網(wǎng)絡(luò)開(kāi)始流行全民"中國(guó)心"頭像
全球華人開(kāi)展愛(ài)國(guó)行動(dòng) 堅(jiān)決反對(duì)西藏獨(dú)立
奧運(yùn)火炬?zhèn)鬟f活動(dòng)遭藏獨(dú)份子阻礙
512汶川大地震 無(wú)數(shù)人在此災(zāi)難中痛失親人朋友(學(xué)校損失被迫異地復(fù)課)
08年8月8日20點(diǎn) 北京奧運(yùn)會(huì)開(kāi)幕
劉翔因腿傷退出比賽 成為全民討論熱點(diǎn)
毒奶粉事件 使中國(guó)奶制品業(yè)受重創(chuàng)
起于美國(guó)的金融風(fēng)暴 席卷全球
2008,是屬于中國(guó)人的奧運(yùn)年.從4年前得知我們要舉辦奧運(yùn)的那一刻起,到后來(lái)奧運(yùn)圣火輾轉(zhuǎn)傳遞,然后到奧運(yùn)會(huì)順利開(kāi)幕,選手們展開(kāi)精彩角逐,最后到奧運(yùn)圓滿閉幕,這些都在我們心中留下一個(gè)個(gè)永生難忘的精彩瞬間 那一個(gè)個(gè)運(yùn)動(dòng)健兒揮灑汗水,頑強(qiáng)拼搏的身影也銘刻于我們心底...
2008,也是中國(guó)多災(zāi)多難的一年.一個(gè)突如其來(lái)的大地震,讓無(wú)數(shù)的人痛失自己摯愛(ài)的親人,朋友,也失去了自己心愛(ài)的家園...跌倒了,不要緊,最后我們還是爬起來(lái)了.當(dāng)?shù)弥@一噩耗時(shí),我們?nèi)珖?guó)同胞都紛紛伸出自己的援助之手,捐資捐物,幫災(zāi)民重建家園.這也讓我們看到了中華的希望,我們傳統(tǒng)的互助精神并沒(méi)有被遺忘.一個(gè)災(zāi)難的磨練,令世人更加清楚地認(rèn)識(shí)到了這個(gè)民族的力量所在.
......
對(duì)于我而言,2008也是具有里程碑式意義的一年.因?yàn)檫@一年我告別了自己的大學(xué)生涯,開(kāi)始人生新旅程.不曉得我這個(gè)句號(hào)劃得完不完美,但是我自己無(wú)悔就夠了,畢竟我努力過(guò)了,就讓所大學(xué)以前的記憶,所有記憶都停在這一年吧,也停留在我的內(nèi)心深處...
時(shí)間推著我們向前 我們是無(wú)法停留在原地的 只有把昨天的記憶埋于心底作養(yǎng)料 用現(xiàn)有的來(lái)播種 然后期待明天能開(kāi)出絢爛的花朵...
再見(jiàn)了,2008;再見(jiàn)了,我的大學(xué)生活,雖說(shuō)是再見(jiàn)卻永遠(yuǎn)不會(huì)再見(jiàn),但愿我在往后十年里能有所成就,也希望09年以后,世界能繼續(xù)朝著繁榮安定的方向邁進(jìn),能順利找到工作.....
個(gè)人在項(xiàng)目開(kāi)發(fā)中總結(jié)的。供大家參考
1.頁(yè)面顯示中文時(shí)出現(xiàn)的亂碼,通常使用
1 <%@ page contentType="text/html;charset=gb2312"%>
可以達(dá)到處理亂碼的效果
2.從請(qǐng)求中獲得數(shù)據(jù)是出現(xiàn)的中文亂碼處理方法有
(1) get請(qǐng)求有兩種處理方法
方法1:
在tomcat的配置文件(conf)中的server.xml的
1 <Connector port="8080" protocol="HTTP/1.1"
2 connectionTimeout="20000"
3 redirectPort="8443"
4 URIEncoding="gb2312"/>
加入上面第4行代碼即可。
方法2:也就是通常說(shuō)的再編碼的說(shuō)法,
1 <%
2 String name=request.getParameter("name");
3 byte []b = name.getBytes("GB2312");
4 name=new String(b);
5 %>
6 也可簡(jiǎn)化為:
7 <%=new String(request.getParameter().getBytes("GB2312"))
8 %>
(2)post請(qǐng)求
在jsp頁(yè)面中加入也下代碼
1 <%request.setCharacterEncoding("gb2312");%>
需要注意的是這部分代碼要放寫(xiě)在獲得請(qǐng)求內(nèi)容以前。
3.以上就是JSP頁(yè)面中出現(xiàn)亂碼的方法,最后我想說(shuō)的就是如何確定發(fā)送的
請(qǐng)求是GET 還是POST。
(1)一般表單(Form)提交中有method方法確定。
(2)通過(guò)URL鏈接傳遞為GET方法提交
(3)通過(guò)地址重寫(xiě)的為GET方法提交
謝謝閱讀
我是軟件專業(yè)現(xiàn)在是大二的學(xué)生,我們已經(jīng)學(xué)了1年的Java 知識(shí),現(xiàn)在還沒(méi)有開(kāi)Java Web 我想多
提前和多學(xué)點(diǎn)知識(shí),可我有點(diǎn)迷惑。開(kāi)始應(yīng)該還先學(xué)JSP方面的知識(shí),學(xué)JSP 必須要學(xué)習(xí)HTML方面的知道,
如涉及到CSS,JS.如果想把網(wǎng)站設(shè)計(jì)更美觀的還需要學(xué)習(xí)PS。當(dāng)一切都好的時(shí)候,可能考慮學(xué)習(xí)框架,可現(xiàn)
在Java框架特多,我應(yīng)該怎么選擇,那些好啊。最后學(xué)習(xí)J2EE方面東西。我在互聯(lián)網(wǎng)上看到,有點(diǎn)人說(shuō)學(xué)習(xí)
J2EE可無(wú)EJB,這是真的嗎??還有最后問(wèn)題學(xué)了這樣一切,現(xiàn)在流行AJAX。又要學(xué)習(xí)這個(gè)知識(shí)。我想了我
應(yīng)該從哪里開(kāi)始啊。如果都學(xué)一個(gè)人精力不能有那么多啊,可要是不學(xué)那開(kāi)發(fā)做出來(lái)東西在外觀或其他方面
沒(méi)有別人好吧。希望那些高手們,幫我出個(gè)主意。。謝謝啦。。。
|