Sắp xếp chọn (Selection Sort) trong C



Giải thuật sắp xếp chọn (Selection Sort) là một giải thuật đơn giản. Giải thuật sắp xếp này là một giải thuật dựa trên việc so sánh in-place, trong đó danh sách được chia thành hai phần, phần được sắp xếp (sorted list) ở bên trái và phần chưa được sắp xếp (unsorted list) ở bên phải. Ban đầu, phần được sắp xếp là trống và phần chưa được sắp xếp là toàn bộ danh sách ban đầu.

Phần tử nhỏ nhất được lựa chọn từ mảng chưa được sắp xếp và được tráo đổi với phần bên trái nhất và phần tử đó trở thành phần tử của mảng được sắp xếp. Tiến trình này tiếp tục cho tới khi toàn bộ từng phần tử trong mảng chưa được sắp xếp đều được di chuyển sang mảng đã được sắp xếp.

Chương trình minh họa sắp xếp chọn (Selection Sort) trong C

Quảng cáo
#include <stdio.h>
#include <stdbool.h>
#define MAX 7

int intArray[MAX] = {4,6,3,2,1,9,7};

void printline(int count){
   int i;
	
   for(i = 0;i <count-1;i++){
      printf("=");
   }
	
   printf("=\n");
}

void display(){
   int i;
   printf("[");
	
   // duyet qua tat ca phan tu 
   for(i = 0;i<MAX;i++){
      printf("%d ", intArray[i]);
   }
	
   printf("]\n");
}

void selectionSort(){

   int indexMin,i,j; 
	
   // lap qua ta ca cac so
   for(i = 0; i < MAX-1; i++){ 
	
      // thiet lap phan tu hien tai la min 
      indexMin = i;
		
      // kiem tra phan tu hien tai co phai la nho nhat khong 
      for(j = i+1;j<MAX;j++){
         if(intArray[j] < intArray[indexMin]){
            indexMin = j;
         }
      }

      if(indexMin != i){
         printf("Trao doi phan tu: [ %d, %d ]\n" , intArray[i], intArray[indexMin]); 
			
         // Trao doi cac so 
         int temp = intArray[indexMin];
         intArray[indexMin] = intArray[i];
         intArray[i] = temp;
      }          

      printf("Vong lap thu %d#:",(i+1));
      display();
   }
}  

main(){
   printf("Mang du lieu dau vao: ");
   display();
   printline(50);
   selectionSort();
   printf("Mang sau khi da sap xep: ");
   display();
   printline(50);
}
Quảng cáo

Kết quả

Biên dịch và chạy chương trình C trên sẽ cho kết quả:

Sắp xếp chọn (Selection Sort) trong C

Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.

Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:

Follow fanpage của team https://www.facebook.com/vietjackteam/ hoặc facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.


giai-thuat-sap-xep-chon.jsp


Tài liệu giáo viên