丁丁

asd


  • 首页

  • 归档

  • 标签

排序笔记

发表于 2016-05-23   |  

1.归并排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public class mergesort{
public static void mergesort(int[] list){
if(list.length>1){
int[] list1 = new int[list.length/2];
System.arraycopy(list,0,list1,0,list.length/2);
mergesort(list1);
int list2length = list.length-list1.length;
int[] list2 = new int[list2length];
System.arraycopy(list,list.length/2,list2,0,list2length);
mergesort(list2);
int[] temp = merge(list1,list2);
System.arraycopy(temp,0,list,0,temp.length);
}
}
public static int[] merge(int[] list1,int[] list2){
int[] temp = new int[list1.length + list2.length];
int c1 = 0; //list1
int c2 = 0; //list2
int c3 = 0; //temp
while(c1<list1.length && c2<list2.length){
if(list1[c1]<list2[c2])
temp[c3++] = list1[c1++];
else
temp[c3++] = list2[c2++];
}
while(c1<list1.length)
temp[c3++] = list1[c1++];
while(c2<list2.length)
temp[c3++] = list2[c2++];
return temp;
}
public static void main(String args[]){
int list[] = {2,4,5,9,1,6,7,8};
mergesort(list);
for(int i = 0;i<list.length;i++){
System.out.println(list[i]+" ");
}
}
}

img

2.快速排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public class quicksort{
public static void quickSort(int[] list){
quickSort(list,0,list.length-1);
}
public static void quickSort(int[] list,int first,int last){
if(last > first){
int pivotindex = partition(list,first,last);
quickSort(list,first,pivotindex-1);
quickSort(list,pivotindex+1,last);
}
}
public static int partition(int[] list,int first,int last){
int pivot = list[first]; //choose the first element as the pivot
int low = first+1;
int high = last;
while(high > low){
while(high >= low && list[low] <= pivot) //从开始往后找>=主元的给low
low++;
while(high >= low && list[high] > pivot) //从后往前找<主元的给high
high--;
if(high > low){ //交换high,low项
int temp = list[high];
list[high] = list[low];
list[low] = temp;
}
}
while(high>first && list[high]>=pivot)
high--;
if(pivot>list[high]){ //如果主元比high项大,交换
list[first] = list[high];
list[high] = pivot;
return high;
}
else{
return first;
}
}
public static void main(String args[]){
int[] list = {2,3,2,5,6,1,-2,3,14,12};
quickSort(list);
for(int i = 0;i<list.length;i++)
System.out.println(list[i]);
}
}

img

标签测试文章

发表于 2016-05-22   |  

client端

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import java.io.*;
import java.net.*;

public class client
{
public static void main(String[] args)
{
try{
Socket socket = new Socket("127.0.1.1",1681);
InetAddress addr = socket.getInetAddress();
System.out.println(addr.getHostAddress());
PrintWriter out = new PrintWriter(socket.getOutputStream());
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));
String s;
do{
System.out.println("(client1端)请输入:");
s=sin.readLine();
out.println(s);
out.flush();
System.out.println("sever说:"+in.readLine());
if(s.equals(null)){
System.out.println("服务器断开");
break;
}
}while(!s.equals("bye"));
out.close();
in.close();
socket.close();

}
catch(Exception e)
{
System.out.println(e);
}
}
}

server端

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import java.io.*;
import java.net.*;

public class server
{
public static void main(String[] args)
{

try{
ServerSocket server = new ServerSocket(1681);
Socket socket = server.accept();
InetAddress addr = socket.getInetAddress();
System.out.println(addr.getHostAddress());
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));//获取client端流
PrintWriter out = new PrintWriter(socket.getOutputStream());//发送数据
BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));
String s;
while(true){
System.out.println("(sever端)请输入:");
if((s = in.readLine()).equals("bye"))
break;
System.out.println("client1说:"+s);
out.println(sin.readLine());
out.flush();
}
System.out.println("end");
in.close();
out.close();
socket.close();
server.close();
}
catch(Exception e){
System.out.println(e);
}
}
}

InetAddress

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.net.*;


public class inetaddress{
public static void main(String args[]){
try{
InetAddress addr = InetAddress.getLocalHost();
//ip = addr.getHostAddress();
System.out.println(addr.getHostName());
System.out.println(addr.getHostAddress());
} catch(Exception ex) {
System.err.print(ex);
}
}
}

java集合框架学习笔记

发表于 2016-05-18   |  

规则集

1.散列集(HashSet)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class testmethodincollection{
public static void main(String[] args){
java.util.Set<String> set1 = new java.util.HashSet<String>();
set1.add("asd");
set1.add("asd"); //散列集中不能有相同元素
set1.add("qwe");
System.out.println("set1 is:"+set1+"\n"+set1.size()); //散列集中元素顺序是乱的
set1.remove("qwe");
System.out.println("remove qwe,set1 is:"+set1+"\n"+set1.size());
java.util.Set<String> set2 = new java.util.HashSet<String>();
set2.addAll(set1); //在set2中添加set1
set2.add("asd");
System.out.println("add set1 and \"asd\",set2 is:"+set2);
set2.retainAll(set1); //保留set2中与set1相同的元素
System.out.println("retain set1,set2 is"+set2);
set2.removeAll(set1);
System.out.println("remove set1,set2 is"+set2);
}
}

2.链式散列集

1
2
3
4
5
6
7
8
9
10
11
12
13
import java.util.*;

public class testlinkedhashset{
public static void main(String args[]){
Set<String> set = new LinkedHashSet<String>();
set.add("asd");
set.add("qwe");
set.add("zxc");
System.out.println(set); //链式散列集中元素有顺序
for(Object element:set)
System.out.print(element.toString().toLowerCase()+" \n");
}
}

3.树形集

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.util.*;

public class testtreeset{
public static void main(String args[]){
Set<String> set = new HashSet<String>();
set.add("asd");
set.add("qwe");
set.add("zxc");
set.add("rty");
TreeSet<String> treeset = new TreeSet<String>(set);
System.out.println("treeset is:"+treeset);
System.out.println("treeset中第一个元素:"+treeset.first());
System.out.println("最后一个元素:"+treeset.last());
System.out.println("qwe之前的:"+treeset.headSet("qwe"));
System.out.println("qwe之后的:"+treeset.tailSet("qwe"));
System.out.println("小于p的最小元素:"+treeset.lower("p"));
System.out.println("大于p的最大元素:"+treeset.higher("p"));
System.out.println("小于或等于\"p\"的最大元素:"+treeset.floor("p"));
System.out.println("大于或等于\"p\"的最小元素:"+treeset.ceiling("p"));
System.out.println("删除第一个元素并返回:"+treeset.pollFirst());
System.out.println("删除最后一个元素并返回:"+treeset.pollLast());
System.out.println("treeset is:"+treeset);
}
}

比较器接口(comparator)

线性表

线性表和集合的静态方法

规则集和线性表的性能

向量类Vector和栈类Stack

队列和优先队列

图(Map)

学习android listview及其原生下拉刷新的笔记

发表于 2016-05-15   |  

listview的建立

1.定义一个Data实体类(作为listview适配器的适配类型)

代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Data {
public String name;
public int imageId;
public Data(String name,int imageId)
{
this.name = name;
this.imageId = imageId;
}
public String getName(){
return name;
}
public int getImageId()
{
return imageId;
}
}

2.在layout目录下建立item.xml(用于加载listview中每一项的内容)

代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/image"
android:layout_height="wrap_content"
android:layout_width="match_parent"
/>
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>

3.创建一个自定义的适配器,继承自Arraydapter,并将泛型指定为Data类

代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class DataAdapter extends ArrayAdapter{
private int resourceId;
public DataAdapter(Context context, int textViewResourceId, List<Data> object){
super(context,textViewResourceId,object);
resourceId = textViewResourceId;
}
@Override
public View getView(int position,View convertView,ViewGroup parent){
Data data = (Data) getItem(position);
View view = LayoutInflater.from(getContext()).inflate(resourceId,null);
ImageView dataimage = (ImageView)view.findViewById(R.id.image);
TextView dataName = (TextView)view.findViewById(R.id.text);
dataimage.setImageResource(data.getImageId());
dataName.setText(data.getName());
return view;
}
}

4.然后就是MainActivity

代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class MainActivity extends AppCompatActivity {
private List<Data> dataList = new ArrayList<Data>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initData();
DataAdapter adapter = new DataAdapter(Main2Activity.this,R.layout.item,dataList);
ListView listview = (ListView)findViewById(R.id.listview1);
listview.setAdapter(adapter);
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Data data = dataList.get(position);
Toast.makeText(MainActivity.this,data.getName(), Toast.LENGTH_LONG).show();
}
});
}
private void initData(){
Data biyadi = new Data("biyadi",R.drawable.biyadi);
dataList.add(biyadi);
Data falali = new Data("falali",R.drawable.falali);
dataList.add(falali);
}
}

5.最后别忘了在activity_main.xml中添加listview控件

代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.ding.listview_practice.MainActivity"
android:weightSum="1">
<ListView
android:id="@+id/listview1"
android:layout_height="wrap_content"
android:layout_width="match_parent"
>
</ListView>
</LinearLayout>

google原生下拉刷新

只需对上面的代码作如下修改

1.修改activity_main.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.ding.listview_practice.MainActivity"
android:weightSum="1">
<LinearLayout
android:layout_width="400dp"
android:layout_height="65dp">
<EditText
android:layout_height="wrap_content"
android:layout_width="339dp"/>
</LinearLayout>

<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/id_swipe_ly"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<ListView
android:id="@+id/listview1"
android:layout_height="wrap_content"
android:layout_width="match_parent"
>
</ListView>
</android.support.v4.widget.SwipeRefreshLayout>
</LinearLayout>

2.修改MainActivity

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
public class MainActivity extends Activity implements SwipeRefreshLayout.OnRefreshListener{
private static final int REFRESH_COMPLETE = 0X110;
private List<Data> dataList = new ArrayList<Data>();
private ArrayAdapter adapter;
private ListView listview;
private SwipeRefreshLayout mSwipeLayout;

private Handler mHandler = new Handler()
{
public void handleMessage(android.os.Message msg)
{
switch (msg.what)
{
case REFRESH_COMPLETE:
Data as = new Data("as",R.drawable.asd);
dataList.add(as);
adapter.notifyDataSetChanged();
mSwipeLayout.setRefreshing(false);
break;

}
};
};
@SuppressLint("InlinedApi")
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initdata();
adapter = new DataAdapter(MainActivity.this,R.layout.item,dataList);
listview = (ListView)findViewById(R.id.listview1);
mSwipeLayout = (SwipeRefreshLayout) findViewById(R.id.id_swipe_ly);
mSwipeLayout.setOnRefreshListener(this);
mSwipeLayout.setColorScheme(android.R.color.holo_blue_bright, android.R.color.holo_green_light,
android.R.color.holo_orange_light, android.R.color.holo_red_light);
listview.setAdapter(adapter);
}
public void onRefresh()
{
mHandler.sendEmptyMessageDelayed(REFRESH_COMPLETE, 2000);
}
private void initdata()
{
Data asd = new Data("asd",R.drawable.asd);
dataList.add(asd);
}
}

格林公式和高斯公式的几何物理意义(摘自知乎)

发表于 2016-05-13   |  

格林公式

img

格林公式的几何意义
问:格林公式的几何意义是什么呢?为什么边界和积分值会有联系?就像牛顿莱布尼兹公式中定积分值和两端值有关,格林公式中区域二重积分和边界曲线积分有关。
答:
是这样的,函数P(x,y),Q(x,y)两个函数构成了格林公式的核心
我们可以将两个函数组装为一个复向量,即一个新的函数
。
这样就是2维平面上的每个点都对应一个复向量
这就像一个地图上的水流流速图(或者风向图,想想一张图上布满了小箭头),如果我们说P,Q都是连续的,即地图上的水流在相应方向是连续的。
有了这个有现实意义的理解我们就来看格林公式吧:

这个东西是什么,他是复变函数W(x,y)的C-R方程。也许你不懂?那你知道一点就好了,如果这个东西等于0,则说明这个点以及周围所有点都是是可导的(暂且先这么理解,不准确)。所以积分结果就是所有不可导的点的C-R和。

知道这些我们就可以说说格林公式的几何含义了:
P和Q组成了W,即一个水流流速图。
如果某个点水流的流速和周围不是连续的,它就是一个出水口或者入水口,他的C-R方程值是流入流出水流的速度。
格林公式就是这样的:
对于一个水流流速图,区域内所有出水口入水口的流入或流出的水的速度和,就是你在区域边界所得到的流入或流出的水的速度和。

用数学语言来讲:对于一个有源流量场,其区域内流量源流入流出速度的和,等于区域边界流速的和。

作者:苗加加
链接:https://www.zhihu.com/question/22674439/answer/22265952
来源:知乎

怎样理解格林公式和高斯公式?格林公式和高斯公式在物理或者其他领域有什么意义?

我在学习积分的时候,脑海里用的是这样的一个模型:空间上布满密密麻麻的点,每个点的质量(可以是其他某种性质的量)不同,如果是线积分,就是扫过一条线,积累下来的小点的质量;如果是面积分,就是扫过一片面,积累下来的小点的质量,同理可以往高维上发展。
直觉上,我无法接受格林公式,原因主要来自于这样一个潜意识:有一个圆,我沿着这个圆的边界采样,得到边界所有小点的总质量M,现在你告诉我圆圈内部小点的某个总量等于M。
举个更实在的例子:黑夜里,有个操场上密密麻麻散落着不同的东西,给我一个头灯,让我沿着跑道捡东西,然后我发现跑道上全是钱,捡了一圈,拢共1万块大洋,然后你告诉我跑道圈内部的东西加起来能卖一万块钱。
开完笑么?黑灯瞎火的,我怎么知道跑道内部是个什么鬼,我甚至不知道那里是绿荫草地还是煤灰渣子,里面还有座山也说不定。
我们认为我们不能了解圆圈内部的性质,是因为我们没有在里面取样,一个样本都没有。然而事实上,我们在学习一维空间的积分——牛顿-莱布尼茨公式的时候就已经遇到了这个情况:在时间段a-b两端点取样,得到的位移S,我们并没有在时间段a-b内部取样,然而却知道瞬时速度在这个时间段内的累计正好是这个S。梗就在这里:我们直觉上觉得跑道上的钱跟操场内部的事物没有关系,然而是有关系的。

img

图中,与y轴平行的一条虚线经过圆圈a,b两点,函数P在两点各被分成两个方向上的量,我从a点跳到b时(不经过任何其他点),捡起的量为x1-x2,相当于右上角式子的右边;而我从a沿虚线扫到b,由牛顿-莱布尼茨原理可知,积累的另外一种量(P在y轴方向的偏微商)为y2-y1,相当于右上角式子的左边。两者显然是有关系的。这个圆圈上布满了这样的虚线,由此,将牛顿-莱布尼茨原理中点与线的关系,推广到了线与面的关系。

作者:yayiyo
链接:https://www.zhihu.com/question/35874883/answer/99213280
来源:知乎

丁丁

丁丁

丁丁的博客

5 日志
2 标签
GitHub
友情连接
  • 萌狼
  • 奥维
  • happy
© 2016 丁丁
由 Hexo 强力驱动
主题 - NexT.Muse