今日、私はそれがC、C ++ですが、非常に異なるああの配列があると、Java配列の側面について学びました。私はそれのこの側面を学習した後、独自の知識と経験を紹介しましょう。
オープンのアレイのうち文のJava:
アレイタイプ[]配列名=新しい配列型[配列の長さ];(一次元配列)
例えば:INT []データは=新しいINT [10];
データ型のオブジェクト配列[] [] =新しいデータタイプ[行数] [列数];(2次元配列)
; [8] [7]そのようなINT [] [] =新しいintとしてデータ
:あってもよい
配列要素名= {配列型配列[] };
例えば:INT []データ= {1,2,2,3,4,5 }; // その長さは6であり、
データ・タイプ・オブジェクト配列[] [] = {{...}、{...}、... { }};
私たちは長さ6の配列を定義したと言うが、我々は避けるの配列境界に順に7つの要素は、この時間に行きたい場合は、我々は新しいアレイを再オープンすることができます。データは新しいint型= [7] ;
上記の我々は型配列、何のいくつかのタイプを持つ配列を、言及しましたか?私はあなたを教え、いや、先生が言った、アレイは8種類あり:.のInt、ダブル、文字、長いバイト、ブール、フロート、短い
そして、私たちはその中に、学習の原則を感じるとC ++の側面配列をソートする必要があります同じ原理は、いわゆるオリジナルの狙いは、それではありません。のは、ソートやクイックソート良く知られている今のバブルについて少し話をしてみましょう。
バブル法デモ:
非常にシンプルより中古尋ねられたとき、非常に少ない、それが面接を理解されています!
すべての要素のペアごとの比較の順序、最後で最大。
すべてのペアワイズ比較の順序は、最終的な表面上の最大の残りの要素。
第二段階は、わずか数まで繰り返されます。
サイクル数を設定します。
セット開始の中央値を比較して、数字を終了します。
最小の前にペアごとの比較、。
サイクル数が完了するまで繰り返して、手順2と3。
int[] a={10,9,4,6,2,8,3,7,1,5};
String act = e.getActionCommand();
if("冒泡排序法".equals(act))
for(int i=0;i<a.length;i++)
for(int j=i+1;j<a.length;j++)
{
if(a[i]>a[j])
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}......
高速選別方法:
旅の記録を注文しては、他のものより小さいレコードキーワード部分の重要な部分は、二つの部分にそれぞれシーケンシングが注文の全配列まで継続前記二つの独立した部分、に分類されます。
ソートの簡単な例:
(A)旅行ソート処理:
注文全体のプロセス(B)
配列の配列全体、軸を見たゼロ番目の位置、及びそれが交換よりも小さい場合、それは治療よりも大きいより最後のものとして見ると、それよりも小さい線比の終了後に交換彼が交換さより少し交換。このようにサイクルにおいて、ソーティング旅行が完了し、左、右の中心軸は、これら2つの独立した種類の各アレイ、分割統治を使用し、その後、中心軸よりも大きく、より小さくなっています。
public int getMiddle(int[] a, int low,int high)
{
int start = low;
int end = high;
int temp = a[start]; //数组的第一个作为中轴
while(start< end)
{
while(start < end && a[end] > temp)
{
end--;
}
a[start] = a[end];//比中轴小的记录移到低端
while(start < end && a[start] < temp)
{
start++;
}
a[end] = a[start] ; //比中轴大的记录移到高端
}
a[start] = temp ; //中轴记录到尾
return start;
}
public void QuickSort(int[] a,int low,int high)
{
if(low < high)
{
int middle = getMiddle(a,low,high); //将numbers数组进行一分为二
QuickSort(a, low, middle-1); //对低字段表进行递归排序
QuickSort(a, middle+1, high); //对高字段表进行递归排序
}
}
その後、我々は、これは私が定期的にデモコードを書いている、これらの2個の動的イメージソート処理の視覚的表現のうちに自分自身の描画ボードを設定することができます。
import java.awt.FlowLayout;
import java.awt.Graphics;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Sort {
public void showUI(){
JFrame jfr = new JFrame();
jfr.setSize(1000,800);
jfr.setTitle("排序图像演示");
jfr.setLocationRelativeTo(null);
jfr.setDefaultCloseOperation(3);
jfr.setLayout(new FlowLayout());
DrawListener drawl = new DrawListener();
JButton jbt = new JButton("冒泡排序法");
jfr.add(jbt);
jbt.addActionListener(drawl);
JButton jbt1 = new JButton("快速排序法");
jfr.add(jbt1);
jbt1.addActionListener(drawl);
jfr.setVisible(true);
Graphics g =jfr.getGraphics();
drawl.g=g;
}
public static void main(String[] agrs){
Sort s =new Sort();
s.showUI();
}
}
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class DrawListener implements ActionListener {
Graphics g;
public int getMiddle(int[] a, int low,int high)
{
int start = low;
int end = high;
int temp = a[start]; //数组的第一个作为中轴
while(start< end)
{
while(start < end && a[end] > temp)
{
end--;
}
a[start] = a[end];//比中轴小的记录移到低端
g.setColor(Color.WHITE);
g.fillRect(0,0,2000,1000);
for(int k=0;k<a.length;k++)
{
Color c =new Color(0,a[k]*10,0);
g.setColor(c);
g.drawString(""+a[k],(k*40)+40, 150);
g.fillRect(k*40+40,200,20,20*a[k]);
}
try {
Thread.sleep(400);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
while(start < end && a[start] < temp)
{
start++;
}
a[end] = a[start] ; //比中轴大的记录移到高端
g.setColor(Color.WHITE);
g.fillRect(0,0,2000,1000);
for(int k=0;k<a.length;k++)
{
Color c =new Color(0,a[k]*10,0);
g.setColor(c);
g.drawString(""+a[k],(k*40)+40, 150);
g.fillRect(k*40+40,200,20,20*a[k]);
}
try {
Thread.sleep(700);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
a[start] = temp ; //中轴记录到尾
g.setColor(Color.WHITE);
g.fillRect(0,0,2000,1000);
for(int k=0;k<a.length;k++)
{
Color c =new Color(0,a[k]*10,0);
g.setColor(c);
g.drawString(""+a[k],(k*40)+40, 150);
g.fillRect(k*40+40,200,20,20*a[k]);
}
try {
Thread.sleep(700);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
return start ; // 返回中轴的位置
}
public void QuickSort(int[] a,int low,int high)
{
if(low < high)
{
int middle = getMiddle(a,low,high); //将numbers数组进行一分为二
QuickSort(a, low, middle-1); //对低字段表进行递归排序
QuickSort(a, middle+1, high); //对高字段表进行递归排序
}
}
/*/public void FastSort(int[] a,int low,int high){
int start = low;
int end =high;
int temp=a[low];
while(start<end){
while(start<end&&a[end]>temp){
end--;
}
a[start]=a[end];
while(start<end&&a[start]<temp){
start++;
}
a[end]=a[start];
a[start]=temp;
if(start<end){
FastSort(a,low,start-1);
FastSort(a,start+1,high);
}
}
}/*/
public void actionPerformed(ActionEvent e){
int[] a={10,9,4,6,2,8,3,7,1,5};
String act = e.getActionCommand();
if("冒泡排序法".equals(act))
for(int i=0;i<a.length;i++)
for(int j=i+1;j<a.length;j++)
{
if(a[i]>a[j])
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
g.setColor(Color.WHITE);
g.fillRect(0,0,2000,1000);
for(int k=0;k<a.length;k++)
{
Color c =new Color(0,a[k]*10,0);
g.setColor(c);
g.drawString(""+a[k],(k*40)+40, 150);
g.fillRect(k*40+40,200,20,20*a[k]);
}
try {
Thread.sleep(400);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
if("快速排序法".equals(act)){
QuickSort(a, 0, 9);
for(int i=0;i<10;i++)
System.out.println(" "+a[i]);
}
}
}