- 1 1. परिचय
- 2 2. swap function को मूलभूत कार्यान्वयन विधि
- 3 3. swap function र प्वाइन्टरको उपयोग
- 4 4. Array र Structure मा swap फङ्सनको प्रयोग
- 5 5. swap function लाई प्रयोग गरेर सॉर्ट एल्गोरिदम
- 6 6. सारांश
1. परिचय
C भाषा मा swap कार्य के हो?
C भाषा मा、swap कार्य(मानको अदलाबदल) लाई चलको मानलाई साट्न प्रयोग गरिन्छ। उदाहरणका लागि、a = 5
、b = 10
जस्ता दुई चलहरू छन् भने、swap कार्य प्रयोग गरेरa = 10
、b = 5
मा परिवर्तन गर्न सकिन्छ。C++ माstd::swap
नामको मानक पुस्तकालय उपलब्ध छ、तर C भाषा मा त्यस्तो निर्मित कार्य छैन। त्यसैले、C भाषा माआफैं swap कार्यलाई कार्यान्वयन गर्न आवश्यक पर्छ。
किन C भाषा मा swap कार्यलाई आफैं बनाउनु आवश्यक छ?
C++ भन्दा फरक、C भाषा मा सामान्य swap कार्य मानक रूपमा उपलब्ध छैन। त्यसैले、विशिष्ट डेटा प्रकारका लागि लागू गर्न सकिने आफ्नै swap कार्य लाई कार्यान्वयन गर्न आवश्यक छ। साथै、पोइन्टर प्रयोग गरेर、कार्यमार्फत चलको मानलाई सुरक्षित रूपमा साट्न सम्भव हुन्छ。
यो लेखमा सिक्न सकिने कुरा
यो लेखमा、C भाषा मा swap कार्यको कार्यान्वयन विधि व्याख्या गरिन्छ、र प्रयोगको रूपमाएरे र संरचनाको मानलाई साट्ने तरिका、तथा सर्ट एल्गोरिदममा प्रयोगका उदाहरण प्रस्तुत गरिन्छ। तलका बिषयहरू सिकेर、C भाषा मा प्रोग्रामिङको बुझाइलाई गहिरो बनाउन सकिन्छ。
- Basic Implementation Method of the swap Function
- Implementation of a swap function using pointers
- Swapping values of arrays or structures
- How to Use in Sorting Algorithms
2. swap function को मूलभूत कार्यान्वयन विधि
C भाषा मा, चलको मानलाई साटासाट (swap) गर्ने केही तरिकाहरू छन्। यहाँ, प्रतिनिधि तीनवटा तरिकाहरू प्रस्तुत गरिन्छ, र प्रत्येकको फाइदा‑नोक्सानीको बारेमा व्याख्या गरिन्छ।
2.1 अस्थायी चल प्रयोग गरेर swap function
सबैभन्दा सामान्य र सहज बुझ्न सकिने विधि होअस्थायी चल (टेम्पोररी चल) प्रयोग गर्ने विधि। तलको जस्तै, अस्थायी चलtemp
प्रयोग गरेर मान साटासाट गरिन्छ।
कोड उदाहरण
#include
// swap function (प्वाइन्टर प्रयोग गरेर)
void swap(int *a, int *b) {
int temp = *a; // a को मान अस्थायी भेरिएबलमा सुरक्षित गर्नुहोस्
*a = *b; // a मा b को मान असाइन गर्नुहोस्
*b = temp; // b मा अस्थायी भेरिएबलको मान (मूल a) असाइन गर्नुहोस्
}
int main() {
int x = 5, y = 10;
printf("बदलाइ अघि: x = %d, y = %dn", x, y);
swap(&x, &y);
printf("बदलाइ पछि: x = %d, y = %dn", x, y);
return 0;
}
निष्पादन परिणाम
स्वाप अघि: x = 5, y = 10
स्वाप पछि: x = 10, y = 5
व्याख्या
temp
a
a
tob
को मान असाइन गर्नुहोस्b
temp
a
फाइदा‑नोक्सानी
Method | Merits | Disadvantages |
---|---|---|
Use a temporary variable | Highly readable and less prone to bugs | Consumes memory for temporary variables |
यो विधि पढ्न सजिलो र सुरक्षित भएको कारणले, सामान्य C प्रोग्रामहरूमा सबैभन्दा सिफारिस गरिने विधि हो।
2.2 XOR सञ्चालन प्रयोग गरेर swap function
XOR (एक्सक्लुसिव OR) सञ्चालन प्रयोग गरेर, अस्थायी चल बिना चलको मान साटासाट गर्न सकिन्छ।
कोड उदाहरण
#include
// XOR प्रयोग गरेर swap फङ्सन
void swap(int *a, int *b) {
if (a != b) { // एउटै ठेगाना पास गरिएमा रोकथाम
*a = *a ^ *b;
*b = *a ^ *b;
*a = *a ^ *b;
}
}
int main() {
int x = 5, y = 10;
printf("स्वाप अघि: x = %d, y = %dn", x, y);
swap(&x, &y);
printf("स्वाप पछि: x = %d, y = %dn", x, y);
return 0;
}
निष्पादन परिणाम
बदलाइ अघि: x = 5, y = 10
बदलाइ पछि: x = 10, y = 5
फाइदा‑नोक्सानी
Method | Merits | Disadvantages |
---|---|---|
Use XOR operation | No temporary variables needed and low memory consumption. | Poor readability and prone to bugs |
2.3 जोड‑घटाव प्रयोग गरेर swap function
XOR जस्तै, अस्थायी चल बिना चलको मान साटासाट गर्ने विधि रूपमा, जोड‑घटाव (जोड/घट) प्रयोग गर्ने विधि उपलब्ध छ।
कोड उदाहरण
#include
// जोड-घटाव प्रयोग गरेर swap फङ्सन
void swap(int *a, int *b) {
*a = *a + *b;
*b = *a - *b;
*a = *a - *b;
}
int main() {
int x = 5, y = 10;
printf("स्वाप अघि: x = %d, y = %dn", x, y);
swap(&x, &y);
printf("स्वाप पछि: x = %d, y = %dn", x, y);
return 0;
}
निष्पादन परिणाम
स्वाप अघि: x = 5, y = 10
स्वाप पछि: x = 10, y = 5
फाइदा‑नोक्सानी
Method | Merits | Disadvantages |
---|---|---|
Using addition and subtraction | No temporary variables, low memory consumption | There is a risk of overflow. |
2.4 प्रत्येक swap विधिको तुलना
Method | Merits | Disadvantages | Applicable Scenarios |
---|---|---|---|
Use a temporary variable | high readability and safety | Use a little memory | General-purpose program |
Use XOR operation | Can save memory | Poor readability, prone to bugs | Embedded Systems |
Using addition and subtraction | Can save memory | There is a risk of overflow. | Special case (Mathematical operation optimization) |
सारांश
- Three Implementation Methods of the Swap Function in C Language
- In general, is recommended because it is the safest and has the highest readability.
- Methods using XOR or addition and subtraction may be utilized in .
3. swap function र प्वाइन्टरको उपयोग
अघिल्लो खण्डमा परिचय गराइएको swap function ले, सबै प्वाइन्टर प्रयोग गरेर गरिरहेको थियो। यो C भाषाको कार्यको तर्कहरूको ह्यान्डलिंगसँग नजिकको सम्बन्ध छ। यस खण्डमा, प्वाइन्टरको आधारभूत कुरा समेट्दै, किन swap function मा प्वाइन्टर आवश्यक छ विस्तारपूर्वक व्याख्या गर्नेछौं।
3.1 मान पास र सन्दर्भ पासको भिन्नता
C भाषाको कार्यहरूमा, डिफल्ट रूपमा “मान पास (call by value)” गरिन्छ जस्तो विशेषता हुन्छ। अर्थात्, कार्यलाई पास गरिएको चलको प्रतिलिपि बनाइन्छ, त्यसैले कार्यभित्र परिवर्तन गरे पनि मूल चलमा असर हुँदैन।
मान पासको उदाहरण
#include
// मूल्य-परिवहन swap फङ्सन (गलत तरिका)
void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
}
int main() {
int x = 5, y = 10;
printf("स्वाप अघि: x = %d, y = %dn", x, y);
swap(x, y);
printf("स्वाप पछि: x = %d, y = %dn", x, y);
return 0;
}
चलाउने परिणाम
बदलाइ अघि: x = 5, y = 10
बदलाइ पछि: x = 5, y = 10 ← मानहरू स्वाप गरिएको छैन!
व्याख्या
swap(x, y)
x
y
copies- したがって、関数内で と を交換しても、 ままとなります。
यो समस्या समाधान गर्न, “सन्दर्भ पास (call by reference)” प्रयोग गर्न आवश्यक छ।
3.2 प्वाइन्टर प्रयोग गरेर swap function
प्वाइन्टर प्रयोग गरेर, कार्यमा चलको ठेगाना पास गरेर, सिधै त्यसको मान परिवर्तन गर्न सकिन्छ।
प्वाइन्टर प्रयोग गरेर swap function
#include
// सही swap फंक्शन (प्वाइन्टर प्रयोग गरेर)
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int x = 5, y = 10;
printf("बदलाइ अघि: x = %d, y = %dn", x, y);
swap(&x, &y); // पता पठाउनुहोस्
printf("बदलाइ पछि: x = %d, y = %dn", x, y);
return 0;
}
चलाउने परिणाम
पूर्व विनिमय: x = 5, y = 10
स्वैप पछि: x = 10, y = 5
व्याख्या
swap(&x, &y);
जस्तै, चरx
रy
को पता हातमा दिनु।swap
a
b
I can directly change the value of the original variable- यसको कारणले, फङ्सन भित्रका परिवर्तनहरू मुख्य प्रोग्राममा पनि लागू हुन्छन्।
3.3 किन swap function मा प्वाइन्टर आवश्यक छ?
प्वाइन्टर प्रयोग नगरी swap गर्न खोज्दा, मान पासको विशेषताका कारण मानहरू साटासाट हुँदैन भनेको कारण हो। प्वाइन्टर प्रयोग गरेर, मूल चललाई सिधै सञ्चालन गर्न सकिन्छ, र सही रूपमा swap कार्यान्वयन हुन्छ।
बुँदा
- Pass by Value
swap(int a, int b)
- Using Pointers
swap(int *a, int *b)
3.4 प्वाइन्टरको उपयोग गर्ने फाइदा
प्वाइन्टर प्रयोग गरेर, swap function बाहेक पनि तलका जस्ता फाइदाहरू छन्।
Use cases for pointers | Explanation |
---|---|
Change the function’s arguments | When you want to change the value of a variable inside a function, like the swap function. |
Array Operations | Arrays have a close relationship with pointers, so they can be operated efficiently. |
Dynamic Memory Management | malloc free |
प्वाइन्टर C भाषामा अत्यन्त महत्वपूर्ण अवधारणा हो, swap function लाई बुझेर, प्वाइन्टरको आधारभूत कुरा सिक्न सकिन्छ भन्नेछ।
सारांश
- In the C language, function arguments are by default , so if you don’t use pointers in the swap function, .
- By using pointers, you can pass the address of a variable and directly change its value.
- Pointers can also be used for array operations and dynamic memory management, in addition to the swap function.

4. Array र Structure मा swap फङ्सनको प्रयोग
अघिल्लो भागमा, आधारभूत चलको मान साट्न swap फङ्सनलाई परिचय गरायौं। तर, C भाषामा केवल चल मात्र होइन, एरेका तत्वहरू र संरचनाका सदस्यहरूको साटासाट मा पनि swap फङ्सन प्रयोग गर्न सकिन्छ। यस भागमा, ती प्रयोग विधिहरूलाई विस्तृत रूपमा व्याख्या गर्नेछौं।
4.1 एरे तत्वहरूको साटासाट
एरेका तत्वहरू साटेर, सोर्ट प्रक्रिया वा विशिष्ट डेटा अपरेसनलाई प्रभावकारी रूपमा गर्न सकिन्छ। एरेका तत्वहरू बदल्न, प्वाइन्टर प्रयोग गरेर बनाइएको swap फङ्सन प्रयोग गर्न सकिन्छ।
4.1.1 एरेका तत्वहरू बदल्ने swap फङ्सन
तलको कोडमा, एरेका विशेष दुई तत्वहरू साट्ने swap फङ्सन कार्यान्वयन गरिएको छ।
कोड उदाहरण
#include
// सरणीका तत्वहरू स्वैप गर्ने swap फङ्सन
void swapArrayElements(int arr[], int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int size = sizeof(arr) / sizeof(arr[0]);
printf("स्वैप अघि को सरणी: ");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("n");
// सरणीका तत्वहरू स्वैप गर्ने (0 औं र 4 औं स्वैप)
swapArrayElements(arr, 0, 4);
printf("स्वैप पछि को सरणी: ");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("n");
return 0;
}
कार्यक्रम परिणाम
बदलाइ अघि को एरे: 1 2 3 4 5
बदलाइ पछि को एरे: 5 2 3 4 1
व्याख्या
swapArrayElements(arr, 0, 4)
arr
0th element and 4th element- Note: if an index outside the range is specified, occurs, so it must be used with caution.
4.2 संरचना सदस्यहरूको साटासाट
C भाषामा, संरचना प्रयोग गरेर विभिन्न प्रकारका डेटा एकत्रित गर्न सकिन्छ। यस संरचनाको इन्स्ट्यान्सलाई साट्न पनि सम्भव छ।
4.2.1 संरचनाको मान साट्ने swap फङ्सन
तलको कोडमा, संरचनाको इन्स्ट्यान्स (अब्जेक्ट) सम्पूर्णलाई swap गर्ने फङ्सन कार्यान्वयन गरिएको छ।
कोड उदाहरण
#include
#include
// संरचना परिभाषा
typedef struct {
int id;
char name[20];
} Person;
// संरचना स्वैप फंक्शन
void swapStruct(Person *p1, Person *p2) {
Person temp = *p1; // अस्थायी भेरिएबल प्रयोग गरेर स्वैप
*p1 = *p2;
*p2 = temp;
}
int main() {
Person person1 = {1, "Alice"};
Person person2 = {2, "Bob"};
printf("पूर्व स्वैप:n");
printf("Person 1: ID=%d, Name=%sn", person1.id, person1.name);
printf("Person 2: ID=%d, Name=%sn", person2.id, person2.name);
// संरचना मानहरू स्वैप गर्नुहोस्
swapStruct(&person1, &person2);
printf("स्वैप पछि:n");
printf("Person 1: ID=%d, Name=%sn", person1.id, person1.name);
printf("Person 2: ID=%d, Name=%sn", person2.id, person2.name);
return 0;
}
कार्यक्रम परिणाम
बदलाइ अघि:
Person 1: ID=1, Name=Alice
Person 2: ID=2, Name=Bob
बदलाइ पछि:
Person 1: ID=2, Name=Bob
Person 2: ID=1, Name=Alice
सारांश
- By swapping elements of the array, data manipulation and sorting processes become possible.
- By swapping the values of structs, roster and data management can be done efficiently.
- Swapping structures within an array is useful for organizing large-scale data.
5. swap function लाई प्रयोग गरेर सॉर्ट एल्गोरिदम
अघिल्लो भागमा, एरे र संरचना (struct) को तत्वहरूलाई swap function प्रयोग गरेर साट्ने तरिका व्याख्या गरियो। यो swap function सॉर्ट एल्गोरिदममा पनि व्यापक रूपमा प्रयोग हुन्छ। यस भागमा, swap function लाई प्रयोग गरेर प्रतिनिधि सॉर्ट एल्गोरिदमहरू, बबल सॉर्ट र हिप सॉर्ट परिचय गराइन्छ।
5.1 Baburu Sōto
5.1.1 Baburu Sōto भने के हो?
Baburu Sōto (Bubble Sort), छेउछाउका तत्वहरूलाई तुलना गरेर साट्दै, एरेलाई सॉर्ट गर्ने सरल एल्गोरिदम हो। सबैभन्दा आधारभूत सॉर्ट विधि हो, तर गणनात्मक जटिलता O(n²) ठूलो भएको कारणले ठूलो डेटा सॉर्टका लागि उपयुक्त छैन।
5.1.2 Baburu Sōto को कार्यान्वयन
कोड उदाहरण
#include
// स्वैप फङ्शन
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
// बबल सॉर्ट फङ्शन
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) { // उत्क्रमणमा क्रमबद्ध गर्नुहोस्
swap(&arr[j], &arr[j + 1]);
}
}
}
}
int main() {
int arr[] = {5, 2, 9, 1, 5, 6};
int size = sizeof(arr) / sizeof(arr[0]);
printf("सॉर्ट पूर्वको एरे: ");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("n");
bubbleSort(arr, size);
printf("सॉर्ट पश्चातको एरे: ");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("n");
return 0;
}
कार्य परिणाम
सॉर्ट गर्नु अघि को एरे: 5 2 9 1 5 6
सॉर्ट पछि को एरे: 1 2 5 5 6 9
5.2 Hīpu Sōto
5.2.1 Hīpu Sōto भने के हो?
Hīpu Sōto (Heap Sort), हिप नामक डेटा संरचना प्रयोग गरेर तत्वहरूलाई क्रमबद्ध गर्ने सॉर्ट एल्गोरिदम हो। गणनात्मक जटिलता O(n log n) भएकोले प्रभावकारी छ, र ठूलो डेटा सॉर्ट गर्न उपयुक्त छ।
5.2.2 Hīpu Sōto को कार्यान्वयन
कोड उदाहरण
#include
// स्वैप फंक्शन
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
// हिप समायोजन फंक्शन
void heapify(int arr[], int n, int i) {
int largest = i;
int left = 2 * i + 1;
int right = 2 * i + 2;
if (left < n && arr[left] > arr[largest])
largest = left;
if (right < n && arr[right] > arr[largest])
largest = right;
if (largest != i) {
swap(&arr[i], &arr[largest]);
heapify(arr, n, largest);
}
}
// हिप सॉर्ट फंक्शन
void heapSort(int arr[], int n) {
for (int i = n / 2 - 1; i >= 0; i--)
heapify(arr, n, i);
for (int i = n - 1; i > 0; i--) {
swap(&arr[0], &arr[i]);
heapify(arr, i, 0);
}
}
int main() {
int arr[] = {5, 2, 9, 1, 5, 6};
int size = sizeof(arr) / sizeof(arr[0]);
printf("सॉर्ट गर्नु अघि को एरे: ");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("n");
heapSort(arr, size);
printf("सॉर्ट पछि को एरे: ");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("n");
return 0;
}
कार्य परिणाम
सॉर्ट गर्नु अघि को एरे: 5 2 9 1 5 6
सॉर्ट गर्नु पछि को एरे: 1 2 5 5 6 9
सारांश
- The swap function is utilized as .
- Bubble Sort
- Heap Sort
6. सारांश
यस लेखमा, सी भाषामा swap कार्यको कार्यान्वयन विधि र प्रयोग बारे विस्तृत रूपमा व्याख्या गरिएको छ। यहाँ, प्रत्येक खण्डको सामग्रीलाई पुनरावलोकन गरी, swap कार्यको महत्त्व र उत्तम प्रयोग विधिलाई व्यवस्थित गर्नेछौं।
6.1 लेखको पुनरावलोकन
यस लेखमा, तलका विषयहरूबारे विस्तृत रूपमा व्याख्या गरिएको छ।
Section | Content Summary |
---|---|
1. Introduction | Basic concept of the swap function and the difference from C++’s |
2. swap फंक्शनको आधारभूत कार्यान्वयन विधि | Implementation of swap using temporary variable, XOR, and addition/subtraction |
3. Using swap function and pointers | Why pointers are necessary, the difference between pass-by-value and pass-by-reference |
4. Array or struct swap | How to swap array elements and struct members and its applicationर |
5. Sorting algorithm utilizing the swap function | Bubble Sortर Heap Sortकोimplementation and comparison |
6.2 swap कार्यको उत्तम प्रयोग
swap कार्यलाई उपयुक्त रूपमा प्रयोग गर्नका लागि, तलका बुँदाहरूलाई ध्यानमा राख्नुहोस्।
मूलभूत चलको अदला-बदली
- In typical programs, using temporary variables is the safest method
- In environments with strict memory constraints, methods using XOR or addition/subtraction are also effective (however, readability decreases)
एरे र संरचनाको तत्वहरूको अदला-बदली
- Swapping Array Elements Using Pointers and Indices
- When swapping structs, it is efficient to utilize pointers when the member size is large
सॉर्ट एल्गोरिद्ममा प्रयोग
- In Bubble Sort, the swap function is used frequently
- Even in advanced algorithms such as heapsort, the swap function is indispensable
6.3 थप सिक्नुपर्ने कुरा
swap कार्यलाई बुझिसकेपछि, सी भाषाको प्रोग्रामिङ कौशललाई अझै सुधार्नका लागि, तलका विषयहरू पनि सिक्न सिफारिस गरिन्छ।
- Applications of Pointers
- Dynamic Memory Management
malloc
free
- Advanced Sorting Algorithms
- Utilizing the swap Function in C++
std::swap
6.4 सारांश
- In C, you need to implement the swap function yourself.
- The swap function works correctly by using pointers.
- You can also apply the swap function when swapping values in arrays or structs.
- Sorting algorithms (Bubble Sort, Heap Sort) also make use of the swap function.
- Understanding the basic concepts of the C language (pointers, memory management, algorithms) will expand the application range of the swap function.
धन्यवाद। swap कार्यको बुझाइलाई गहिरो बनाउनुहोस्, र वास्तविक प्रोग्राममा प्रयोग गरेर हेर्नुहोस्!