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

Menggunakan kekerasan untuk menyelesaikan masalah pengisihan pemilihan

WBOY
WBOYke hadapan
2024-02-18 09:27:11820semak imbas

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>

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

Kenyataan:
Artikel ini dikembalikan pada:linuxprobe.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
Artikel sebelumnya:FAQ sistem pengendalian~Artikel seterusnya:FAQ sistem pengendalian~