Rumah > Tutorial sistem > LINUX > Menggunakan kekerasan untuk menyelesaikan masalah pengisihan pemilihan

Menggunakan kekerasan untuk menyelesaikan masalah pengisihan pemilihan

WBOY
Lepaskan: 2024-02-18 09:27:11
ke hadapan
887 orang telah melayarinya

Menggunakan kekerasan untuk menyelesaikan masalah pengisihan pemilihan

Kaedah brute force adalah cara yang mudah dan langsung untuk menyelesaikan masalah, selalunya berdasarkan secara langsung pada huraian masalah dan definisi konsep yang terlibat.

Idea pengisihan pilihan:

Pada permulaan isihan pemilihan, imbas keseluruhan senarai untuk mencari elemen terkecil, kemudian tukarkannya dengan elemen pertama, dan letakkan elemen terkecil pada kedudukan terakhirnya dalam senarai tertib. Kemudian kita mengimbas senarai bermula dari elemen kedua, cari nilai minimum elemen terakhir (n-1), tukar dengan elemen kedua, dan letakkan elemen kedua terkecil pada kedudukan terakhirnya dalam senarai. Secara umumnya, apabila mengimbas senarai untuk kali ke-i (nilai i berjulat dari 0 hingga n-2), algoritma mencari elemen terkecil di antara elemen terakhir (n-i), dan kemudian menukarnya dengan Ai, dalam ( Selepas n-1) berlalu, senarai itu diisih.

Berikut ialah pelaksanaan kod saya: C++
#include 
using namespace std;
int main()
{
    int i,j,temp,minn,N;
    cin>>N;
    int *Arr=new int[N];
    for(i=0;i<n cin>>Arr[i];
 
    for(i=0;iArr[j])
                minn=j;//记录最小值的下标
        }
        temp=Arr[minn];     //交换Arr[minn]和Arr[i]。
        Arr[minn]=Arr[i];
        Arr[i]=temp;
    }
 
    for(i=0;i<n cout return>
<div style="margin-top: 2em; margin-bottom: 1em;"><span style="color: #1e1e1e; letter-spacing: 2px; border-left: #FF3030 3px solid; border-right: #FF3030 3px solid; padding-left: 8px; padding-right: 8px; font-size: 12pt;"><strong>Analisis Algoritma:</strong></span></div>
<p>Saiz input ditentukan oleh bilangan elemen n Operasi asas ialah perbandingan nilai utama Arr[minn]>Arr[j]. Bilangan kali perbandingan ini dilakukan hanya bergantung pada saiz tatasusunan, </p>
<p>C(n)=∑[i=0,i=N-2] ∑[j=i+1,j=N-1]=∑[i=0,i=N-2] ((N-1 )-(i+1)+1))=∑[i=0,i=N-2](N-i-1)=(n-1)*n/2</p>
<p>Iaitu, untuk sebarang input, isihan pemilihan ialah algoritma dengan kerumitan masa Θ(n2). Bilangan pertukaran kunci ialah Θ(n) <i>Ini menjadikan isihan pemilihan berprestasi lebih baik. </i></p></n></n>
Salin selepas log masuk

Atas ialah kandungan terperinci Menggunakan kekerasan untuk menyelesaikan masalah pengisihan pemilihan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:linuxprobe.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan