المفهوم الأساسي لفرز الفقاعات (BubbleSort) هو مقارنة رقمين متجاورين بالتسلسل، مع وضع العلامة العشرية في المقدمة والرقم الكبير في الخلف. أي في التمريرة الأولى: قم أولاً بمقارنة الرقمين الأول والثاني، ضع العلامة العشرية أولاً والرقم الكبير أخيرًا. ثم قارن بين الرقم الثاني والرقم الثالث، ضع العلامة العشرية في المقدمة والرقم الكبير في الخلف، واستمر هكذا حتى مقارنة الرقمين الأخيرين، ضع العلامة العشرية في المقدمة والرقم الكبير في الخلف. هذه هي نهاية الرحلة الأولى، ويترك العدد الأكبر في النهاية. في المسار الثاني: ابدأ المقارنة من الزوج الأول من الأرقام (لأنه قد يكون بسبب تبادل الرقم الثاني والرقم الثالث أن الرقم الأول لم يعد أصغر من الرقم الثاني)، ضع العلامة العشرية أولاً ، والرقم الكبير بعد وضعه، تستمر المقارنة حتى الرقم من الثاني إلى الأخير (المركز من الأول إلى الأخير هو بالفعل الأكبر). في نهاية التمريرة الثانية، يتم الحصول على الحد الأقصى الجديد للرقم الموضع من الثاني إلى الأخير (في الواقع، هو الرقم من الثاني إلى الأخير في التسلسل بأكمله). استمر بهذا الشكل وكرر العملية المذكورة أعلاه حتى يتم الانتهاء من الفرز أخيرًا.
انسخ رمز الكود كما يلي:
الطبقة العامة بايكسو {
public static void main(String[] args) {
كثافة العمليات [] أ = {2,6,4,5,1,7,3};
كثافة العمليات ط = 0؛
كثافة العمليات ي = 0;
كثافة العمليات ن = 0؛
ل(i= 0;i<a. length-1;i++){
for(j=0;j<a.length-i-1;j++){
إذا(أ[ي]>أ[ي+1]){
ن = أ[ي];
a[j] = a[j+1];
a[j+1] = n;
}
}
}
لـ (i = 0; i < a. length; i++) {
System.out.println(a[i]);
}
}
}
يعد الفرز بالتحديد المباشر أيضًا طريقة فرز بسيطة، وفكرتها الأساسية هي: تحديد الحد الأدنى للقيمة من R[0]~R[n-1] لأول مرة، واستبدالها بـ R[0]، ثم تحديد الحد الأدنى للقيمة. من R{1}~R[n-1] مرتين واستبدلها بـ R[1]...., يختار الوقت i الحد الأدنى للقيمة من R[i-1]~R[n-1] ويتبادلها مع R[i-1]،...، ويحدد الوقت n-1 الحد الأدنى للقيمة من R[ n-2]~ حدد القيمة الدنيا من R[n-1]، واستبدلها بـ R[n-2]، وقم بتمريرها إجمالاً n-1 مرات للحصول على تسلسل مرتب من الصغير إلى الكبير وفقًا لـ رمز الفرز.
انسخ رمز الكود كما يلي:
الطبقة العامة بايكسو {
public static void main(String[] args) {
كثافة العمليات [] أ = {2,6,4,5,1,7,3};
كثافة العمليات ط = 0؛
كثافة العمليات ي = 0;
كثافة العمليات ن = 0؛
ل(i= 0;i<a. length;i++){
for(j=i+1;j<a.length;j++){
إذا(أ[i]>أ[ي]){
ن = أ[i];
أ[ي] = أ[i];
أ[i] = ن;
}
}
}
لـ (i = 0; i < a. length; i++) {
System.out.println(a[i]);
}
}
}
مثال 2
انسخ رمز الكود كما يلي:
الحزمة cn.cqu.coce.xutao;
فرز اختيار الطبقة العامة {
الفراغ الثابت العام الرئيسي(String args[]){
int a[]={34,56,3,234,767,89,0,324,1,32,54,89,8};
int b[]=new int[a.length];
System.arraycopy(a, 0, b, 0, a. length);
for(int i=0;i<a. length;i++){
System.out.print(a[i]+"/t");
}
System.out.println();
//اختر فرز
for(int i=0;i<a.length-1;i++){
int min=i;
for(int j=i+1;j<a.length;j++){
إذا (أ[دقيقة]>أ[ي])
دقيقة = ي؛
}
إذا (دقيقة!=أنا){
int temp=a[min];
a[min]=a[i];
a[i]=temp;
}
}
ل(int i=0;i<a.length;i++)
System.out.print(a[i]+"/t");
System.out.println();
// فرز الفقاعة
for(int i=0;i<b.length;i++){
for(int j=1;j<b.length-i;j++){
إذا(ب[ي-1]>ب[ي]){
int te=b[j];
b[j]=b[j-1];
b[j-1]=te;
}
}
}
ل(int i=0;i<b.length;i++)
System.out.print(b[i]+"/t");
System.out.println();
}
}