Sắp xếp phần tử mảng theo thứ tự tăng dần và giảm dần
Trong trang này, chúng ta sẽ sắp xếp mảng phần tử mảng trong C++ theo thứ tự tăng dần và giảm dần,
Trong chương trình, kích thước của biến mảng được cho 10, vì vậy nó có thể lưu trữ tối đa 10 phần tử tại một thời điểm sẽ được người dùng nhập vào.
Hãy bắt đầu,
C++ Sorting Array Element dưới dạng thứ tự tăng dần
Đây là chương trình,
#include<iostream>
using namespace std;
int main()
{
int arr[10],size,i;
cout<<"Enter the size of Array: "; cin>>size;
cout<<"Enter the element in the Array\n";
for(i=0;i<size;i++)
{
cin>>arr[i];
}
// display entered element
cout<<"Before Sorting Entered Element Are\n";
for(i=0;i<size;i++)
cout<<arr[i]<<"\t";
// sorting process begin
int temp; // declare third variable for swapping
for(i=0;i<size;i++) //outer-loop
{
for(int j=0;j<=size;j++) //inner-loop
{
if(arr[i]<arr[j]) // represent second element in the array list
{
temp = arr[i]; // first array element assign to variable temp
arr[i] = arr[j]; // second element assigning to first element
arr[j] = temp; // variable temp (means first element) assigning to second element
}
}
}
// display sorting element
cout<<"\nAfter Sorting Entered Element Are\n";
for(int i=0;i<size;i++)
cout<<arr[i]<<" ";
return 0;
}
RA
Enter the size of Array:5
Enter the element in the Array
8
7
2
1
4
Before Sorting Entered Element Are
8 7 2 1 4
After Sorting Entered Element Are
1 2 4 7 8
Lời giải thích
Trong chương trình, kích thước của biến mảng được cho 10, vì vậy nó có thể lưu trữ tối đa 10 phần tử tại một thời điểm sẽ được người dùng nhập vào.
Giả sử người dùng đã cho kích thước của mảng 5, vì vậy 5 phần tử sẽ được lưu trữ theo cách này,
arr[0] = 8
arr[1] = 7
arr[2] = 2
arr[3] = 1
arr[4] = 4
Bây giờ sau này, quá trình phân loại sẽ bắt đầu.
Chúng tôi đã sử dụng hai vòng lặp để sắp xếp các phần tử mảng theo thứ tự tăng dần. Trong đó các phần tử mảng đầu tiên sẽ được truy cập từ vòng lặp đầu tiên, trong khi tất cả các phần tử của mảng từ vòng lặp thứ hai sẽ được so sánh với phần tử đầu tiên của nó.
Ở đây vòng lặp đầu tiên được gọi là vòng ngoài và vòng lặp bên trong thứ hai, trong phần tử mảng chương trình sẽ được sắp xếp như sau,
Quan tâm đến nhiều hơn, các vòng lặp này sẽ hoạt động như sau trong đó biến thuộc về vòng ngoài và biến j thuộc về vòng trong,
i = 0, j = 0 kích thước = 5
8 7 2 1 4
for(i = 0; 0 < 5; 0++) // outer loop
{
for(int j = 0; 0 <= 5; 0++) // inner loop
{
if(arr[0] < arr[0]) // 8<8 8<7 8<2 8<1 8<4 all time condition becoming false
{ // so after inner-loop execution will go to outer-loop
temp = arr[0];
arr[0] = arr[1];
arr[1] = temp;
}
}
}
Ở đây chúng ta hoán đổi phần tử 2 và 1 so mảng,
1 7 8 2 4
arr[0] arr[1] arr[2] arr[3] arr[4]
Bây giờ một lần nữa vòng lặp bên trong sẽ thực thi nhưng hãy nhớ ở đây chỉ có giá trị J biến sẽ tăng I = 3, J = 1
for(int j = 1; 1 <= 5; 1++) //inner-loop
{
if(arr[3] < arr[1]) // 2<7 true
{
temp = arr[3]; // temp = 2
arr[3] = arr[1]; // arr[2]=7
arr[1] = temp; // 2
}
}
Ở đây chúng ta hoán đổi phần tử 7 và 2 bây giờ mảng,
1 2 8 7 4
arr[0] arr[1] arr[2] arr[3] arr[4]
Và một lần nữa vòng lặp bên trong sẽ thực thi, và giá trị thời gian này của biến J sẽ là J = 2 và giá trị biến i sẽ giống nhau
for(int j = 2; 2 <= 5; 2++) //inner-loop
{
if(arr[3] < arr[2]) // 7<8 true
{
temp = arr[3]; // temp = 7
arr[3] = arr[2]; // arr[2]=8
arr[2] = temp; // 7
}
}
Ở đây chúng ta hoán đổi phần tử 8 và 7 để mảng bây giờ sẽ là,
1 2 7 8 4
arr[0] arr[1] arr[2] arr[3] arr[4]
và một lần nữa vòng lặp bên trong sẽ được thực thi nhưng điều này trong điều kiện câu lệnh if trở nên sai như,
arr[3] < arr[3] 8<8
Vì vậy, không có gì sẽ được thực hiện và thực hiện sẽ đi đến vòng lặp bên ngoài
Bây giờ giá trị i = 4, j = 0 , n = 5
for(i = 4; 4 < 5; 4++) //outer-loop
{
for(int j = 0; 0 <= 5; 0++) //inner-loop
{
but here in if-statement first two condition false
arr[4] < arr[0] 4<1 //false
arr[4] < arr[1] 4<2 // false
but when variable j value become 2 then condition will be true,
if(arr[4] < arr[2]) // 4<7 true
{
temp = arr[4]; // temp = 4
arr[4] = arr[2]; // arr[2]=7
arr[2] = temp; // 4
}
}
}
Ở đây chúng ta hoán đổi phần tử 7 và 4, bây giờ là mảng
1 2 4 8 7
arr[0] arr[1] arr[2] arr[3] arr[4]
và một lần nữa vòng lặp bên trong sẽ thực thi, và lần này i = 4, j = 3 vì vậy
for(int j = 4; 4 <= 5; 4++) //inner-loop
{
if(arr[4] < arr[3]) // 7<8 true
{
temp = arr[4]; // temp = 7
arr[4] = arr[3]; // arr[2]=8
arr[3] = temp; // 7
}
}
Cuối cùng, chúng ta hoán đổi phần tử 8 và 7
1 2 4 7 8
arr[0] arr[1] arr[2] arr[3] arr[4]
Do đó, vòng lặp này sẽ thực hiện và chúng ta nhận được phần tử được sắp xếp,
C++ Sorting Array Element theo thứ tự giảm dần
Tăng dần đến thứ tự giảm dần, chúng tôi chỉ thay đổi toán tử < thành > nếu câu lệnh và các câu lệnh khác sẽ giống như chương trình trên,
for(i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(arr[i]>arr[j]) // arr[i+1] represent second element in the array list
{
temp = arr[i]; // first array element assign to variable temp
arr[i] = arr[j]; // second element assigning to first element
arr[j] = temp; // variable temp (means first element) assigning to second element
}
}
}