-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
1 lines (1 loc) · 38.8 KB
/
index.html
File metadata and controls
1 lines (1 loc) · 38.8 KB
1
<!DOCTYPE html><html lang="null"><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport"><meta content="yes" name="apple-mobile-web-app-capable"><meta content="black-translucent" name="apple-mobile-web-app-status-bar-style"><meta content="telephone=no" name="format-detection"><meta name="description"><title>唐佳写字的地方</title><link rel="stylesheet" type="text/css" href="/css/style.css?v=0.0.0"><link rel="stylesheet" type="text/css" href="//cdn.bootcss.com/normalize/4.2.0/normalize.min.css"><link rel="stylesheet" type="text/css" href="//cdn.bootcss.com/pure/0.6.0/pure-min.css"><link rel="stylesheet" type="text/css" href="//cdn.bootcss.com/pure/0.6.0/grids-responsive-min.css"><link rel="stylesheet" href="//cdn.bootcss.com/font-awesome/4.6.3/css/font-awesome.min.css"><script type="text/javascript" src="//cdn.bootcss.com/jquery/3.0.0/jquery.min.js"></script><link rel="Shortcut Icon" type="image/x-icon" href="/favicon.ico"><link rel="apple-touch-icon" href="/apple-touch-icon.png"><link rel="apple-touch-icon-precomposed" href="/apple-touch-icon.png"></head><body><div class="body_container"><div id="header"><div class="site-name"><h1 class="hidden">唐佳写字的地方</h1><a id="logo" href="/.">唐佳写字的地方</a><p class="description"></p></div><div id="nav-menu"><a href="/." class="current"><i class="fa fa-home"> Home</i></a><a href="/archives/"><i class="fa fa-archive"> 归档</i></a><a href="/about/"><i class="fa fa-user"> 我</i></a><a href="/atom.xml"><i class="fa fa-rss"> RSS</i></a></div></div><div id="layout" class="pure-g"><div class="pure-u-1 pure-u-md-3-4"><div class="content_container"><div class="post"><h2 class="post-title"><a href="/2017/02/10/笔记-关于协议和IO的基础/">笔记:关于协议和IO的基础</a></h2><div class="post-meta">2017-02-10</div><p class="readmore"><a href="/2017/02/10/笔记-关于协议和IO的基础/">Read More</a></p></div><div class="post"><h2 class="post-title"><a href="/2017/02/01/谈谈线程中断/">谈谈线程中断</a></h2><div class="post-meta">2017-02-01</div><div class="post-content"><blockquote></div><p class="readmore"><a href="/2017/02/01/谈谈线程中断/">Read More</a></p></div><div class="post"><h2 class="post-title"><a href="/2017/01/20/用wait和notify实现简单的生产-消费模式/">用wait和notify实现简单的生产-消费模式</a></h2><div class="post-meta">2017-01-20</div><div class="post-content"><p>一个很简单的<code>wait</code>和<code>notify</code>的例子,wait和sleep的区别是前者会释放锁才进入休眠状态,而后者不释放锁,值得注意的是执行 <code>notify</code> 后,线程并不会立即释放锁,而是要等到退出 <code>synchronized</code> 后才释放锁或者自己主动释放锁(<code>wait()</code>)。</p></div><p class="readmore"><a href="/2017/01/20/用wait和notify实现简单的生产-消费模式/">Read More</a></p></div><div class="post"><h2 class="post-title"><a href="/2017/01/12/好无聊啊-写写排序算法?/">好无聊啊~写写排序算法?</a></h2><div class="post-meta">2017-01-12</div><div class="post-content"><figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div><div class="line">34</div><div class="line">35</div><div class="line">36</div><div class="line">37</div><div class="line">38</div><div class="line">39</div><div class="line">40</div><div class="line">41</div><div class="line">42</div><div class="line">43</div><div class="line">44</div><div class="line">45</div><div class="line">46</div><div class="line">47</div><div class="line">48</div><div class="line">49</div><div class="line">50</div><div class="line">51</div><div class="line">52</div><div class="line">53</div><div class="line">54</div><div class="line">55</div><div class="line">56</div><div class="line">57</div><div class="line">58</div><div class="line">59</div><div class="line">60</div><div class="line">61</div><div class="line">62</div><div class="line">63</div><div class="line">64</div><div class="line">65</div><div class="line">66</div><div class="line">67</div><div class="line">68</div><div class="line">69</div><div class="line">70</div><div class="line">71</div><div class="line">72</div><div class="line">73</div><div class="line">74</div><div class="line">75</div><div class="line">76</div><div class="line">77</div><div class="line">78</div><div class="line">79</div><div class="line">80</div><div class="line">81</div><div class="line">82</div><div class="line">83</div><div class="line">84</div><div class="line">85</div><div class="line">86</div><div class="line">87</div><div class="line">88</div><div class="line">89</div><div class="line">90</div><div class="line">91</div><div class="line">92</div><div class="line">93</div><div class="line">94</div><div class="line">95</div><div class="line">96</div><div class="line">97</div><div class="line">98</div><div class="line">99</div><div class="line">100</div><div class="line">101</div><div class="line">102</div><div class="line">103</div><div class="line">104</div><div class="line">105</div><div class="line">106</div><div class="line">107</div><div class="line">108</div><div class="line">109</div><div class="line">110</div><div class="line">111</div><div class="line">112</div><div class="line">113</div><div class="line">114</div><div class="line">115</div><div class="line">116</div><div class="line">117</div><div class="line">118</div><div class="line">119</div><div class="line">120</div><div class="line">121</div><div class="line">122</div><div class="line">123</div><div class="line">124</div><div class="line">125</div><div class="line">126</div><div class="line">127</div><div class="line">128</div><div class="line">129</div><div class="line">130</div><div class="line">131</div><div class="line">132</div><div class="line">133</div><div class="line">134</div><div class="line">135</div><div class="line">136</div><div class="line">137</div><div class="line">138</div><div class="line">139</div><div class="line">140</div><div class="line">141</div><div class="line">142</div><div class="line">143</div><div class="line">144</div><div class="line">145</div><div class="line">146</div><div class="line">147</div><div class="line">148</div><div class="line">149</div><div class="line">150</div><div class="line">151</div><div class="line">152</div><div class="line">153</div><div class="line">154</div><div class="line">155</div><div class="line">156</div><div class="line">157</div><div class="line">158</div><div class="line">159</div><div class="line">160</div><div class="line">161</div><div class="line">162</div><div class="line">163</div><div class="line">164</div><div class="line">165</div><div class="line">166</div><div class="line">167</div><div class="line">168</div><div class="line">169</div><div class="line">170</div><div class="line">171</div><div class="line">172</div><div class="line">173</div><div class="line">174</div><div class="line">175</div><div class="line">176</div><div class="line">177</div><div class="line">178</div><div class="line">179</div><div class="line">180</div><div class="line">181</div><div class="line">182</div><div class="line">183</div><div class="line">184</div><div class="line">185</div><div class="line">186</div><div class="line">187</div><div class="line">188</div><div class="line">189</div><div class="line">190</div><div class="line">191</div><div class="line">192</div><div class="line">193</div><div class="line">194</div><div class="line">195</div><div class="line">196</div><div class="line">197</div><div class="line">198</div><div class="line">199</div><div class="line">200</div><div class="line">201</div><div class="line">202</div><div class="line">203</div><div class="line">204</div><div class="line">205</div><div class="line">206</div><div class="line">207</div><div class="line">208</div><div class="line">209</div><div class="line">210</div><div class="line">211</div><div class="line">212</div><div class="line">213</div><div class="line">214</div><div class="line">215</div><div class="line">216</div><div class="line">217</div><div class="line">218</div><div class="line">219</div><div class="line">220</div><div class="line">221</div><div class="line">222</div><div class="line">223</div><div class="line">224</div><div class="line">225</div><div class="line">226</div><div class="line">227</div><div class="line">228</div><div class="line">229</div><div class="line">230</div><div class="line">231</div><div class="line">232</div><div class="line">233</div><div class="line">234</div><div class="line">235</div><div class="line">236</div><div class="line">237</div><div class="line">238</div><div class="line">239</div><div class="line">240</div><div class="line">241</div><div class="line">242</div><div class="line">243</div><div class="line">244</div><div class="line">245</div><div class="line">246</div><div class="line">247</div><div class="line">248</div><div class="line">249</div><div class="line">250</div><div class="line">251</div><div class="line">252</div><div class="line">253</div></pre></td><td class="code"><pre><div class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">ArraySort</span> </span>{</div><div class="line"></div><div class="line"> <span class="comment">/**</span></div><div class="line"> * 直接插入排序 最坏复杂度 n2</div><div class="line"> * 每一次都插入到一个已排序的序列中 稳定的排序</div><div class="line"> * <span class="doctag">@param</span> array</div><div class="line"> * <span class="doctag">@return</span></div><div class="line"> */</div><div class="line"> <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">int</span>[] straightInsertionSort(<span class="keyword">int</span>[] array){</div><div class="line"> <span class="keyword">if</span> (array == <span class="keyword">null</span>){</div><div class="line"> <span class="keyword">return</span> array;</div><div class="line"> }</div><div class="line"> <span class="keyword">for</span> (<span class="keyword">int</span> i = <span class="number">1</span>;i < array.length; i++) {</div><div class="line"> <span class="keyword">for</span> (<span class="keyword">int</span> j = <span class="number">0</span>; j < i; j++) {</div><div class="line"> <span class="keyword">if</span> (array[i]<array[j]){</div><div class="line"> <span class="keyword">int</span> t = array[i];</div><div class="line"> <span class="keyword">for</span> (<span class="keyword">int</span> k = i; k > j; k--) {</div><div class="line"> array[k] = array[k-<span class="number">1</span>];</div><div class="line"> }</div><div class="line"> array[j] = t;</div><div class="line"> <span class="keyword">continue</span>;</div><div class="line"> }</div><div class="line"> }</div><div class="line"> }</div><div class="line"> <span class="keyword">return</span> array;</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="comment">/**</span></div><div class="line"> * 希尔排序 插入排序的一种</div><div class="line"> * <span class="doctag">@param</span> array</div><div class="line"> * <span class="doctag">@return</span></div><div class="line"> */</div><div class="line"> <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">int</span>[] shellSort(<span class="keyword">int</span>[] array){</div><div class="line"><span class="comment">// 增量gap</span></div><div class="line"> <span class="keyword">for</span> (<span class="keyword">int</span> gap = array.length/<span class="number">2</span>; gap > <span class="number">1</span> ; gap/=<span class="number">2</span>) {</div><div class="line"><span class="comment">// 直接插入排序</span></div><div class="line"> <span class="keyword">for</span> (<span class="keyword">int</span> i = <span class="number">0</span>; i < gap; i++) {</div><div class="line"> <span class="keyword">for</span> (<span class="keyword">int</span> j = i+gap; j < array.length; j += gap) {</div><div class="line"> <span class="keyword">if</span> (array[j] < array[i]){</div><div class="line"><span class="comment">// 插入 后面的向后移动</span></div><div class="line"> <span class="keyword">int</span> t = array[j];</div><div class="line"><span class="comment">// for ()</span></div><div class="line"> }</div><div class="line"> }</div><div class="line"> }</div><div class="line"> }</div><div class="line"> <span class="keyword">return</span> array;</div><div class="line"> }</div><div class="line"></div><div class="line"></div><div class="line"> <span class="comment">/**</span></div><div class="line"> * 平均n*lgn 最坏n2</div><div class="line"> * <span class="doctag">@param</span> array</div><div class="line"> * <span class="doctag">@return</span></div><div class="line"> */</div><div class="line"> <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">int</span>[] quickSort(<span class="keyword">int</span>[] array){</div><div class="line"> quickSort1(array,<span class="number">0</span>,array.length-<span class="number">1</span>);</div><div class="line"> <span class="keyword">return</span> array;</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">quickSort1</span><span class="params">(<span class="keyword">int</span>[] array,<span class="keyword">int</span> left,<span class="keyword">int</span> right)</span></span>{</div><div class="line"> <span class="keyword">if</span> (left>=right){</div><div class="line"> <span class="keyword">return</span>;</div><div class="line"> }</div><div class="line"> <span class="keyword">int</span> baseValue = array[left];</div><div class="line"> <span class="keyword">int</span> baseIndex = left;</div><div class="line"> <span class="keyword">while</span> (left<right){</div><div class="line"> <span class="keyword">while</span> (array[right] >= baseValue && left < right)</div><div class="line"> right--;</div><div class="line"> <span class="keyword">while</span> (array[left] <= baseValue && left < right)</div><div class="line"> left++;</div><div class="line"> swap(array,left,right);</div><div class="line"> }</div><div class="line"><span class="comment">// swap(array,baseIndex,left);</span></div><div class="line"> array[baseIndex] = array[left];</div><div class="line"> array[left] = baseValue;</div><div class="line"> quickSort1(array,baseIndex,left);</div><div class="line"> quickSort1(array,left+<span class="number">1</span>,right);</div><div class="line"> }</div><div class="line"></div><div class="line"><span class="comment">// public static void quickSort1(int[] array,int start,int end){</span></div><div class="line"><span class="comment">// System.out.println(start+" "+end);</span></div><div class="line"><span class="comment">// if (start == end){</span></div><div class="line"><span class="comment">// return ;</span></div><div class="line"><span class="comment">// }</span></div><div class="line"><span class="comment">// int i = start + 1;</span></div><div class="line"><span class="comment">// int j = end;</span></div><div class="line"><span class="comment">// int baseValue = array[start];</span></div><div class="line"><span class="comment">// while (i<j){</span></div><div class="line"><span class="comment">// while (array[j]>=baseValue){</span></div><div class="line"><span class="comment">// j--;</span></div><div class="line"><span class="comment">// }</span></div><div class="line"><span class="comment">//</span></div><div class="line"><span class="comment">// while (array[i]<baseValue && i<j){</span></div><div class="line"><span class="comment">// i++;</span></div><div class="line"><span class="comment">// }</span></div><div class="line"><span class="comment">//</span></div><div class="line"><span class="comment">// System.out.println(i+" "+j);</span></div><div class="line"><span class="comment">// swap(array,i,j);</span></div><div class="line"><span class="comment">// }</span></div><div class="line"><span class="comment">// swap(array,start,i);</span></div><div class="line"><span class="comment">// quickSort1(array,start,i);</span></div><div class="line"><span class="comment">// quickSort1(array,i+1,end);</span></div><div class="line"><span class="comment">// }</span></div><div class="line"></div><div class="line"></div><div class="line"> <span class="comment">/**</span></div><div class="line"> * 冒泡 n2</div><div class="line"> * <span class="doctag">@param</span> array</div><div class="line"> * <span class="doctag">@return</span></div><div class="line"> */</div><div class="line"> <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">int</span>[] bubbleSort(<span class="keyword">int</span>[] array){</div><div class="line"> <span class="keyword">if</span> (array == <span class="keyword">null</span>){</div><div class="line"> <span class="keyword">return</span> array;</div><div class="line"> }</div><div class="line"> <span class="keyword">for</span> (<span class="keyword">int</span> i = <span class="number">0</span>; i < array.length-<span class="number">1</span>; i++) {</div><div class="line"> <span class="keyword">for</span> (<span class="keyword">int</span> j = array.length-<span class="number">1</span>; j > i; j--) {</div><div class="line"> <span class="keyword">if</span> (array[j]<array[j-<span class="number">1</span>]){</div><div class="line"> swap(array,i,j);</div><div class="line"> }</div><div class="line"> }</div><div class="line"> }</div><div class="line"> <span class="keyword">return</span> array;</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="comment">/**</span></div><div class="line"> * 选择排序 n2 每次选择最小的 也算冒泡的一种 但是减少了交换次数,只有n-1次交换。</div><div class="line"> * <span class="doctag">@param</span> array</div><div class="line"> * <span class="doctag">@return</span></div><div class="line"> */</div><div class="line"> <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">int</span>[] selectSort(<span class="keyword">int</span>[] array){</div><div class="line"> <span class="keyword">if</span> (array == <span class="keyword">null</span>){</div><div class="line"> <span class="keyword">return</span> array;</div><div class="line"> }</div><div class="line"> <span class="keyword">for</span> (<span class="keyword">int</span> i = <span class="number">0</span>; i < array.length -<span class="number">1</span>; i++) {</div><div class="line"> <span class="keyword">int</span> minIndex = i;</div><div class="line"> <span class="keyword">for</span> (<span class="keyword">int</span> j = i+<span class="number">1</span>; j < array.length; j++) {</div><div class="line"> <span class="keyword">if</span> (array[minIndex] > array[j]){</div><div class="line"> minIndex = j;</div><div class="line"> }</div><div class="line"> }</div><div class="line"> <span class="keyword">if</span> (minIndex != i){</div><div class="line"> swap(array,i,minIndex);</div><div class="line"> }</div><div class="line"> }</div><div class="line"> <span class="keyword">return</span> array;</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="comment">/**</span></div><div class="line"> * 计数排序 n 但是对数字有要求</div><div class="line"> * <span class="doctag">@param</span> array</div><div class="line"> * <span class="doctag">@return</span></div><div class="line"> */</div><div class="line"> <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">int</span>[] countSort(<span class="keyword">int</span>[] array){</div><div class="line"> <span class="keyword">int</span> maxIndex = <span class="number">0</span>;</div><div class="line"> <span class="keyword">for</span> (<span class="keyword">int</span> i = <span class="number">1</span>; i < array.length; i++) {</div><div class="line"> <span class="keyword">if</span> (array[maxIndex] < array[i]){</div><div class="line"> maxIndex = i;</div><div class="line"> }</div><div class="line"> }</div><div class="line"> <span class="keyword">int</span>[] array1 = <span class="keyword">new</span> <span class="keyword">int</span>[array[maxIndex]+<span class="number">1</span>];</div><div class="line"> <span class="keyword">for</span> (<span class="keyword">int</span> i = <span class="number">0</span>; i < array.length; i++) {</div><div class="line"> array1[array[i]]+=<span class="number">1</span>;</div><div class="line"> }</div><div class="line"> <span class="keyword">int</span>[] newArray = array;</div><div class="line"> <span class="keyword">int</span> index = <span class="number">0</span>;</div><div class="line"> <span class="keyword">for</span> (<span class="keyword">int</span> i = <span class="number">0</span>; i < array1.length; i++) {</div><div class="line"> <span class="keyword">for</span> (<span class="keyword">int</span> j = <span class="number">0</span>; j < array1[i]; j++) {</div><div class="line"> newArray[index++] = i;</div><div class="line"> }</div><div class="line"> }</div><div class="line"> <span class="keyword">return</span> newArray;</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="comment">/**</span></div><div class="line"> * 归并排序</div><div class="line"> * <span class="doctag">@param</span> array</div><div class="line"> */</div><div class="line"> <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">int</span>[] mergeSort(<span class="keyword">int</span>[] array){</div><div class="line"><span class="comment">// divice(array,0,array.length-1);</span></div><div class="line"> mergeSort1(array,<span class="number">0</span>,array.length-<span class="number">1</span>);</div><div class="line"> <span class="keyword">return</span> array;</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">mergeSort1</span><span class="params">(<span class="keyword">int</span>[] array,<span class="keyword">int</span> left,<span class="keyword">int</span> right)</span></span>{</div><div class="line"> <span class="keyword">int</span> mid = (left+right)/<span class="number">2</span>;</div><div class="line"> <span class="keyword">if</span> (left<right){</div><div class="line"> mergeSort1(array,left,mid);</div><div class="line"> mergeSort1(array,mid+<span class="number">1</span>,right);</div><div class="line"> mergeArray(array,left,right);</div><div class="line"> }</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">mergeArray</span><span class="params">(<span class="keyword">int</span>[]array,<span class="keyword">int</span> left,<span class="keyword">int</span> right)</span></span>{</div><div class="line"> <span class="keyword">int</span>[] tmp = <span class="keyword">new</span> <span class="keyword">int</span>[right-left+<span class="number">1</span>];</div><div class="line"> <span class="keyword">int</span> mid = (left+right)/<span class="number">2</span>;</div><div class="line"> <span class="keyword">int</span> index = <span class="number">0</span>;</div><div class="line"> <span class="keyword">int</span> i = left;</div><div class="line"> <span class="keyword">int</span> j = mid+<span class="number">1</span>;</div><div class="line"> <span class="keyword">while</span> (i<=mid && j<=right){</div><div class="line"> <span class="keyword">if</span> (array[i] < array[j]){</div><div class="line"> tmp[index++] = array[i++];</div><div class="line"> }<span class="keyword">else</span> {</div><div class="line"> tmp[index++] = array[j++];</div><div class="line"> }</div><div class="line"> }</div><div class="line"><span class="comment">// 把左边的放入tmp</span></div><div class="line"> <span class="keyword">while</span> (i<=mid){</div><div class="line"> tmp[index++] = array[i++];</div><div class="line"> }</div><div class="line"> <span class="keyword">while</span> (j<=right){</div><div class="line"> tmp[index++] = array[j++];</div><div class="line"> }</div><div class="line"> <span class="keyword">for</span> (<span class="keyword">int</span> k = <span class="number">0</span>; k < tmp.length; k++) {</div><div class="line"> array[left++] = tmp[k];</div><div class="line"> }</div><div class="line"> }</div><div class="line"></div><div class="line"></div><div class="line"><span class="comment">// public static void merge(int[] array,int left,)</span></div><div class="line"></div><div class="line"></div><div class="line"> <span class="function"><span class="keyword">static</span> <span class="keyword">void</span> <span class="title">swap</span><span class="params">(<span class="keyword">int</span>[] array,<span class="keyword">int</span> i,<span class="keyword">int</span> j)</span></span>{</div><div class="line"> <span class="keyword">int</span> temp = array[i];</div><div class="line"> array[i] = array[j];</div><div class="line"> array[j] = temp;</div><div class="line"> }</div><div class="line"></div><div class="line"></div><div class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">printArray</span><span class="params">(<span class="keyword">int</span>[] t)</span></span>{</div><div class="line"> <span class="keyword">if</span> (t == <span class="keyword">null</span>){</div><div class="line"> System.out.println(t);</div><div class="line"> <span class="keyword">return</span>;</div><div class="line"> }</div><div class="line"> <span class="keyword">for</span> (<span class="keyword">int</span> i = <span class="number">0</span>; i < t.length; i++) {</div><div class="line"> System.out.print(t[i]+<span class="string">" "</span>);</div><div class="line"> }</div><div class="line"> System.out.println();</div><div class="line"> }</div><div class="line"></div><div class="line"></div><div class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">main</span><span class="params">(String[] args)</span> </span>{</div><div class="line"> <span class="keyword">int</span>[] array = RandomUtil.randomIntArray(<span class="number">100</span>,<span class="number">10</span>);</div><div class="line"> printArray(array);</div><div class="line"><span class="comment">// int[] array1 = {43, 74, 72, 9, 10, 43 , 93 , 15 ,36 ,0 };</span></div><div class="line"><span class="comment">// bubbleSort(array);</span></div><div class="line"><span class="comment">// printArray(countSort(array));</span></div><div class="line"> printArray(mergeSort(array));</div><div class="line"> printArray(array);</div><div class="line"><span class="comment">// printArray(straightInsertionSort(array));</span></div><div class="line"><span class="comment">// printArray(array);</span></div><div class="line"> }</div><div class="line">}</div></pre></td></tr></table></figure></div><p class="readmore"><a href="/2017/01/12/好无聊啊-写写排序算法?/">Read More</a></p></div><div class="post"><h2 class="post-title"><a href="/2016/08/10/笔记-关于TCP协议和IO的基础/">笔记:关于TCP协议和IO的基础</a></h2><div class="post-meta">2016-08-10</div><div class="post-content"><p>java nio这块看了很多次,但是每次都是粗浅的看了下大概,导致很多东西回头又忘了,再加上现在nio这块现在容器封装的太深,你在平时根本就没有接触的机会。所以,要能记住不常用的东西,最简单办法就是从底层上理解他。</p></div><p class="readmore"><a href="/2016/08/10/笔记-关于TCP协议和IO的基础/">Read More</a></p></div><div class="post"><h2 class="post-title"><a href="/2016/08/07/也谈谈字符/">也谈谈字符</a></h2><div class="post-meta">2016-08-07</div><div class="post-content"><h3 id="1-计算机只认识字节"><a href="#1-计算机只认识字节" class="headerlink" title="1.计算机只认识字节"></a>1.计算机只认识字节</h3><p>计算机其实只存储和处理字节bit,对它而言,根本没有字符这个概念,字符是给人理解的,也就是说,字符都是在内存中才形成的,在硬盘上只有字节。</p></div><p class="readmore"><a href="/2016/08/07/也谈谈字符/">Read More</a></p></div><div class="post"><h2 class="post-title"><a href="/2016/07/27/线程-进程-并发-并行/">线程 进程 并发 并行</a></h2><div class="post-meta">2016-07-27</div><div class="post-content"><h5 id="任务调度"><a href="#任务调度" class="headerlink" title="任务调度"></a>任务调度</h5><p>线程是什么?要理解这个概念,须要先了解一下操作系统的一些相关概念。大部分操作系统(如Windows、Linux)的任务调度是采用时间片轮转的抢占式调度方式,也就是说一个任务执行一小段时间后强制暂停去执行下一个任务,每个任务轮流执行。任务执行的一小段时间叫做时间片,任务正在执行时的状态叫运行状态,任务执行一段时间后强制暂停去执行下一个任务,被暂停的任务就处于就绪状态等待下一个属于它的时间片的到来。这样每个任务都能得到执行,由于CPU的执行效率非常高,时间片非常短,在各个任务之间快速地切换,给人的感觉就是多个任务在“同时进行”,这也就是我们所说的并发(别觉得并发有多高深,它的实现很复杂,但它的概念很简单,就是一句话:多个任务同时执行)</p></div><p class="readmore"><a href="/2016/07/27/线程-进程-并发-并行/">Read More</a></p></div><div class="post"><h2 class="post-title"><a href="/2016/06/09/关于GC/">关于GC</a></h2><div class="post-meta">2016-06-09</div><div class="post-content"><p>先来看三个问题:</p></div><p class="readmore"><a href="/2016/06/09/关于GC/">Read More</a></p></div><div class="post"><h2 class="post-title"><a href="/2016/05/11/JVM内存模型/">JVM内存模型</a></h2><div class="post-meta">2016-05-11</div><div class="post-content"><p><img src="http://img.blog.csdn.net/20131231175136859?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2luZ29md29ybGQ=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="JVM内存图"></p></div><p class="readmore"><a href="/2016/05/11/JVM内存模型/">Read More</a></p></div><div class="post"><h2 class="post-title"><a href="/2016/03/07/String为什么是不可变的/">String为什么是不可变的</a></h2><div class="post-meta">2016-03-07</div><div class="post-content"><h3 id="1-为什么String-是不可变的?"><a href="#1-为什么String-是不可变的?" class="headerlink" title="1. 为什么String 是不可变的?"></a>1. 为什么String 是不可变的?</h3><p>通过查看String的源代码发现,String的底层实现是通过一个 ==private final char[] value==; 也就是一个字符数组实现的,value 是一个引用,一旦指向堆中一个对象实例(数组也是一个对象)就不能再指向其他对象了,并且String并没有提供 setValue 方法,所以无法操作这个数组内存实例,所以String是不可变的。</p></div><p class="readmore"><a href="/2016/03/07/String为什么是不可变的/">Read More</a></p></div><nav class="page-navigator"><span class="page-number current">1</span><a class="page-number" href="/page/2/">2</a><a class="extend next" rel="next" href="/page/2/">Next</a></nav></div></div><div class="pure-u-1-4 hidden_mid_and_down"><div id="sidebar"><div class="widget"><form action="//www.google.com/search" method="get" accept-charset="utf-8" target="_blank" class="search-form"><input type="text" name="q" maxlength="20" placeholder="Search"/><input type="hidden" name="sitesearch" value="http://immrtang.com"/></form></div><div class="widget"><form action="//www.baidu.com/baidu" method="get" accept-charset="utf-8" target="_blank" class="search-form"><input type="search" name="word" maxlength="20" placeholder="Search"/><input type="hidden" name="si" value="http://immrtang.com"/><input name="tn" type="hidden" value="bds"/><input name="cl" type="hidden" value="3"/><input name="ct" type="hidden" value="2097152"/><input name="s" type="hidden" value="on"/></form></div><div class="widget"><div class="widget-title"><i class="fa fa-folder-o"> Categories</i></div></div><div class="widget"><div class="widget-title"><i class="fa fa-star-o"> Tags</i></div><div class="tagcloud"><a href="/tags/JVM/" style="font-size: 15px;">JVM</a> <a href="/tags/Java基础/" style="font-size: 15px;">Java基础</a> <a href="/tags/字符编码/" style="font-size: 15px;">字符编码</a> <a href="/tags/排序-算法/" style="font-size: 15px;">排序 算法</a> <a href="/tags/计算机基础/" style="font-size: 15px;">计算机基础</a> <a href="/tags/并发/" style="font-size: 15px;">并发</a></div></div><div class="widget"><div class="widget-title"><i class="fa fa-file-o"> Recent</i></div><ul class="post-list"><li class="post-list-item"><a class="post-list-link" href="/2017/02/10/笔记-关于协议和IO的基础/">笔记:关于协议和IO的基础</a></li><li class="post-list-item"><a class="post-list-link" href="/2017/02/01/谈谈线程中断/">谈谈线程中断</a></li><li class="post-list-item"><a class="post-list-link" href="/2017/01/20/用wait和notify实现简单的生产-消费模式/">用wait和notify实现简单的生产-消费模式</a></li><li class="post-list-item"><a class="post-list-link" href="/2017/01/12/好无聊啊-写写排序算法?/">好无聊啊~写写排序算法?</a></li><li class="post-list-item"><a class="post-list-link" href="/2016/08/10/笔记-关于TCP协议和IO的基础/">笔记:关于TCP协议和IO的基础</a></li><li class="post-list-item"><a class="post-list-link" href="/2016/08/07/也谈谈字符/">也谈谈字符</a></li><li class="post-list-item"><a class="post-list-link" href="/2016/07/27/线程-进程-并发-并行/">线程 进程 并发 并行</a></li><li class="post-list-item"><a class="post-list-link" href="/2016/06/09/关于GC/">关于GC</a></li><li class="post-list-item"><a class="post-list-link" href="/2016/05/11/JVM内存模型/">JVM内存模型</a></li><li class="post-list-item"><a class="post-list-link" href="/2016/03/07/String为什么是不可变的/">String为什么是不可变的</a></li></ul></div><div class="widget"><div class="widget-title"><i class="fa fa-external-link"> Blogroll</i></div><ul></ul><a href="http://www.example1.com/" title="site-name1" target="_blank">site-name1</a><ul></ul><a href="http://www.example2.com/" title="site-name2" target="_blank">site-name2</a><ul></ul><a href="http://www.example3.com/" title="site-name3" target="_blank">site-name3</a></div></div></div><div class="pure-u-1 pure-u-md-3-4"><div id="footer">© <a href="/." rel="nofollow">唐佳写字的地方.</a> Powered by<a rel="nofollow" target="_blank" href="https://hexo.io"> Hexo.</a><a rel="nofollow" target="_blank" href="https://github.com/tufu9441/maupassant-hexo"> Theme</a> by<a rel="nofollow" target="_blank" href="https://github.com/pagecho"> Cho.</a></div></div></div><a id="rocket" href="#top" class="show"></a><script type="text/javascript" src="/js/totop.js?v=0.0.0" async></script><script type="text/javascript" src="//cdn.bootcss.com/fancybox/2.1.5/jquery.fancybox.pack.js" async></script><script type="text/javascript" src="/js/fancybox.js?v=0.0.0" async></script><link rel="stylesheet" type="text/css" href="/css/jquery.fancybox.css?v=0.0.0"><script type="text/javascript" src="/js/codeblock-resizer.js?v=0.0.0"></script><script type="text/javascript" src="/js/smartresize.js?v=0.0.0"></script></div></body></html>