-
選擇排序
查看全部 -
鏈表
package?com.damu.mc; import?java.util.ArrayList; import?java.util.LinkedList; import?java.util.List;public? class?LinkedTest?{???? ???????public?static?void?main(String[]?args)?{??? ?????//?數組實現????????List<String>?array?=?new?ArrayList<>();?????? ???????//?鏈表實現????????List<String>?linked?=?new?LinkedList<>();????? ??????????//?新增數據????????long?start?=?System.nanoTime();???? ??????????????for?(int?i?=?0;?i?<?1000;?i++)?{??????????? ???????????????array.add("hello?damu");?//?769?9897???? ???????????????????????//?查詢、修改????????}?????? ?????????????????????????long?end?=?System.nanoTime();???? ?????????????????????????????System.out.println("array:?"?+?(end?-?start));?? ???????????????????????????????????long?start2?=?System.nanoTime();???? ???????????????????????????????????????for?(int?i?=?0;?i?<?1000;?i++)?{????? ??????????????????????????????????????????????linked.add("hello?damu");?//?367?9529?????? ????????????????????????????????????????????????????//?新增、刪除????????}????? ???????????????????????????????????????????????????????long?end2?=?System.nanoTime();??? ????????????????????????????System.out.println("linked:?"?+?(end2?-?start2));????}}
查看全部 -
隊列代碼
package com.damu.mc;
import java.util.Queue;
import java.util.concurrent.ArrayBlockingQueue;
/**
?* 隊列操作:項目需求
?*
?* 高并發(fā)的業(yè)務操作,需要同時處理多個用戶的請求(搶購系統(tǒng))
?*? ? ? 問題:后端的程序不能及時的處理所有用戶的請求
?*? ? ? 緩沖操作:將用戶的請求排隊存放(有順序的存放),讓后臺系統(tǒng)逐個處理
?*? ? ? 思考:使用什么樣的技術實現起來更加友好?
?* 可以使用普通集合實現
?*? ? ? 提高效率,使用多線程操作,普通集合存在并發(fā)問題需要處理
?* 可以使用線程安全的集合
?*? ? ? 使用多線程的情況下,完成高效率的操作
?*? ? ? 處理完每個請求之后,需要刪除對應的 請求數據
?* 可以使用隊列操作(線程安全)
?*? ? ? 既能保證多線程情況下的高效率處理
?*? ? ? 能保證每個請求處理之后自動刪除
?*? ? ? [
?*? ? ? > 保存每個搶購請求時--> 入隊操作 offer(url)
?*? ? ? > 處理每個搶購請求時--> 出隊操作 poll()
?*? ? ? ]
?*/
public class QueueTest {
? ? public static void main(String[] args) {
? ? ? ? // 聲明一個隊列:存儲3個數據
? ? ? ? Queue<String> msg = new ArrayBlockingQueue<String>(3);
? ? ? ? msg.add("damu"); // Collections集合的方法
? ? ? ? msg.offer("大牧"); // 隊列的操作方法:增加數據:入隊
? ? ? ? msg.element(); // 查詢隊首位置的第一個數據:不刪除
? ? ? ? msg.poll(); // 查詢并的刪除隊首位置的第一個數據:head/front
? ? ? ? msg.size(); // Collections集合的方法,查詢隊列中的所有數據總數
? ? }
}
查看全部 -
隊列代碼
package com.damu.mc;
import java.util.Queue;
import java.util.concurrent.ArrayBlockingQueue;
/**
?* 隊列操作:項目需求
?*
?* 高并發(fā)的業(yè)務操作,需要同時處理多個用戶的請求(搶購系統(tǒng))
?*? ? ? 問題:后端的程序不能及時的處理所有用戶的請求
?*? ? ? 緩沖操作:將用戶的請求排隊存放(有順序的存放),讓后臺系統(tǒng)逐個處理
?*? ? ? 思考:使用什么樣的技術實現起來更加友好?
?* 可以使用普通集合實現
?*? ? ? 提高效率,使用多線程操作,普通集合存在并發(fā)問題需要處理
?* 可以使用線程安全的集合
?*? ? ? 使用多線程的情況下,完成高效率的操作
?*? ? ? 處理完每個請求之后,需要刪除對應的 請求數據
?* 可以使用隊列操作(線程安全)
?*? ? ? 既能保證多線程情況下的高效率處理
?*? ? ? 能保證每個請求處理之后自動刪除
?*? ? ? [
?*? ? ? > 保存每個搶購請求時--> 入隊操作 offer(url)
?*? ? ? > 處理每個搶購請求時--> 出隊操作 poll()
?*? ? ? ]
?*/
public class QueueTest {
? ? public static void main(String[] args) {
? ? ? ? // 聲明一個隊列:存儲3個數據
? ? ? ? Queue<String> msg = new ArrayBlockingQueue<String>(3);
? ? ? ? msg.add("damu"); // Collections集合的方法
? ? ? ? msg.offer("大牧"); // 隊列的操作方法:增加數據:入隊
? ? ? ? msg.element(); // 查詢隊首位置的第一個數據:不刪除
? ? ? ? msg.poll(); // 查詢并的刪除隊首位置的第一個數據:head/front
? ? ? ? msg.size(); // Collections集合的方法,查詢隊列中的所有數據總數
? ? }
}
查看全部 -
隊列
查看全部 -
隊列
查看全部 -
棧
查看全部 -
數組結構
? ? ? ? ? ? ? ? ? ? ? ??
查看全部 -
front == tail :空隊列
新數據入隊,后置計數器自增(tail++ )
隊列長度:tail - front
數據出隊:數據從隊首出去(刪除),前置計數器自增(front++)
入隊和出隊操作過程中,為了有效利用空間,會進行數據平移(消耗系統(tǒng)性能),為了改進這個缺點,我們可以用循環(huán)隊列,就是不用再平移了
循環(huán)隊列的判斷
front ==?tail 空隊列
(front+1) % len = =front 說明隊列中的數據滿了
查看全部 -
數組(ArrayList):查詢、修改效率高;新增、刪除效率低;
列表(LinkedList):查詢、修改效率低;新增、刪除效率高;
查看全部 -
冒泡排序 空間O(1)
時間: O(1)
最壞 o(n評方)
查看全部
舉報