文の単語を文字数の昇順にソートするJavaプログラム
文を構成する複数の単語を、文字数の昇順(短い順)に並べ替えたい場合、Javaでは挿入ソートを利用して簡単に実装できます。ここでは、実際のコード例とともにその仕組みを詳しく解説します。
サンプルコード
import java.util.*;
public class Demo{
static void sort_elements(String []my_str, int n){
for (int i=1 ;i<n; i++){
String temp = my_str[i];
int j = i - 1;
while (j >= 0 && temp.length() < my_str[j].length()){
my_str[j+1] = my_str[j];
j--;
}
my_str[j+1] = temp;
}
}
public static void main(String args[]){
String []my_arr = {"This", "is", "a", "sample"};
int len = my_arr.length;
sort_elements(my_arr,len);
System.out.print("The sorted array is : ");
for (int i=0; i<len; i++)
System.out.print(my_arr[i]+" ");
}
}
実行結果
The sorted array is : a is This sample
コードの解説
このプログラムでは、Demoというクラス内にsort_elementsという静的メソッドを定義しています。このメソッドは、引数として受け取った文字列配列の各単語の長さを比較し、短い単語から順に並べ替える処理を行います。
並べ替えには挿入ソートというアルゴリズムを採用しています。これは、先頭から順に要素を取り出し、それより前の整列済み部分の適切な位置へ挿入していく手法です。whileループ内で現在の単語の長さと前の単語の長さを比較し、条件を満たす間は要素を一つずつ後ろへずらしていきます。
mainメソッドでは、まず「This」「is」「a」「sample」という4つの単語を含む文字列配列my_arrを定義し、その長さを変数lenに代入します。続いてsort_elementsメソッドを呼び出して配列をソートした後、forループを使って整列された結果をコンソールに出力しています。
なお、このコードは単語の文字数を基準に昇順ソートを行うものであり、アルファベット順(辞書順)のソートとは異なる点に注意してください。辞書順に並べ替えたい場合は、StringクラスのcompareToメソッドや、Arrays.sortメソッドを利用すると簡単に実現できます。
-
Pythonで文中の単語数をカウントする方法|split()とisalpha()を使った2つのアプローチ
本記事では、Pythonを使って文章中の単語数を数えるための解法と、その具体的なアプローチについて詳しく解説します。 問題定義 ある文が与えられたとき、その文に含まれる単語の総数をカウントするプログラムを作成します。 ここでは、以下の2つのアプローチを取り上げます。 アプローチ1: split()関数を使用する方法 アプローチ2: strip()関数とisalpha()関数を組み合わせる方法 アプローチ1:split()関数を使う方法 最もシンプルな方法は、文字列に対してsplit()関数を適用するやり方です。split()はデフォルトで空白文字(スペースやタブなど)を区切りとして文字列を
-
Pythonで文の単語を昇順に並べ替えるプログラムの書き方
文章内の単語を昇順(アルファベット順)に並べ替えるには、まず文章を空白文字を区切りとして単語に分割する必要があります。ここでは簡単のため、空白のみで分割し、句読点はそのまま残します。必要に応じて、replaceメソッドや正規表現を使って記号を取り除くことも可能です。文章を単語に分割したら、国語辞典のように語彙順(レキシコグラフィカル順)で並べ替えます。Pythonでは、元のリスト自体を変更して並べ替えるか、並べ替えた結果を新しいリストとして返すかに応じて、sortメソッドとsorted関数を使い分けます。その場で並べ替える(in-place)元のリストや配列の順序を直接変更したい場合、つまり現