コードはこれを行う必要があります:a)ソートされていない整数の配列が与えられた場合、タスクは次のアルゴリズムを適用して配列をソートすることです(入力に重複が含まれていないと仮定します):配列の最初の要素から開始して次の手順を実行します:–小さい要素の数を数えて、正しい位置を見つけますi。–エレメントが正しい位置にある場合は、後続のエレメントに移動します。–それ以外の場合は、現在のエレメントを位置iにあるエレメントと交換します。–最後の要素に到達するまで、前の手順を繰り返します。
例:5 7 3 6 9チェックa[0]、それよりも小さい要素が1つあるため、位置1の要素と交換する必要があります。7 5 369新しい要素a[0]を確認します。位置3に移動するはずです。65379新しい要素a[0]を確認します。位置2に移動するはずです。35679新しい要素a[0]を確認します。正しい位置にあるので、次の要素a[1]に移動します。
public class Assignment1_T11_25_2729_Sara_Aly {
private int[] a;
private int max;
private int n;
int position=0;
public Assignment1_T11_25_2729_Sara_Aly (int max){
a= new int[max];
}
public void insert(int x){
a[n]=x;
n++;
}
public void sort(){
int out=0, smaller=0;
while(out<n){
for(int in=out+1;in<n;n++){
if(a[in]<a[out])
smaller++;
}
if (smaller==0){
out++;
}
else {
swap(a[out], a[smaller]);
}
}
}
private void swap (int one, int two){
int temp=a[one];
a[one]=a[two];
a[two]=temp;
}
public void display(){
for (int i=0;i<n;i++){
System.out.print(a[i]+ " ");
}
System.out.println("");
}
public static void main(String[]args){
int maxsize=5;
Assignment1_T11_25_2729_Sara_Aly trial;
trial= new Assignment1_T11_25_2729_Sara_Aly(maxsize);
trial.insert(5);
trial.insert(7);
trial.insert(3);
trial.insert(6);
trial.insert(9);
trial.display();
trial.sort();
trial.display();
}
}
Tried a few algorithims to get it to work but for some reason it won't sort any suggestions??
これもソート方法を試しましたが、うまくいきませんでした。
public void sort(){
boolean finished = false;
int position =0;
while (position<max){
if (finished==true){
position++;
finished =false;
}
else {
int smaller=0;
for (int j = position+1; j<max; j++){
int temp=a[position];
if (a[j] <a[position]){
smaller++;
}
}
if (smaller==0){
finished= true;
}
else {
int temp= a[smaller];
a[smaller]=a[position];
a[position]=temp;
}
}
}
}