模版排序

  1. template<typename T>  
  2. struct Node  
  3. {  
  4.     T m_Data;  
  5.     Node * m_pNext;  
  6. };  
  7. template<typename T>  
  8. bool SelectSort(Node<T> * & pHead)  
  9. {  
  10.     Node<T> * pCurNode = NULL;  
  11.     Node<T> * pTemp = NULL;  
  12.     T tTemp;  
  13.     Node<T> * pMin = NULL;  
  14.     if (!pHead)  
  15.         return false;  
  16.     pCurNode = pHead;  
  17.     while (pCurNode)  
  18.     {  
  19.         pTemp = pCurNode->m_pNext;  
  20.         pMin = pCurNode;  
  21.         while (pTemp)  
  22.         {  
  23.             if (pTemp->m_Data < pMin->m_Data)  
  24.             {  
  25.                 pMin = pTemp;  
  26.             }  
  27.             pTemp = pTemp->m_pNext;  
  28.         }  
  29.         if (pMin != pCurNode)  
  30.         {  
  31.             tTemp = pCurNode->m_Data;  
  32.             pCurNode->m_Data = pMin->m_Data;  
  33.             pMin->m_Data = tTemp;  
  34.         }  
  35.         pCurNode = pCurNode->m_pNext;  
  36.     }  
  37.     return true;  
  38. }  
### 关于洛谷平台上的C语言模板排序代码 对于在洛谷平台上查找关于C语言的模板排序算法,可以考虑实现常见的几种排序方法,如快速排序、冒泡排序或是归并排序等。下面提供了一个基于快速排序(Quick Sort)的实例代码,在洛谷或其他编程练习网站上被广泛采用作为教学材料[^1]。 #### 快速排序(Quick Sort) 快速排序是一种高效的排序算法,采用了分治策略来把一个序列分成较小和较大的两个子序列,然后递归地排序这两个子序列。 ```c #include <stdio.h> // 函数声明 void swap(int* a, int* b); int partition (int arr[], int low, int high); void quickSort(int arr[], int low, int high); // 主函数 int main() { int arr[] = {10, 7, 8, 9, 1, 5}; int n = sizeof(arr)/sizeof(arr[0]); quickSort(arr, 0, n-1); printf("Sorted array: \n"); for (int i=0; i < n; ++i) printf("%d ", arr[i]); return 0; } // 实现交换功能的小工具函数 void swap(int* a, int* b) { int t = *a; *a = *b; *b = t; } /* 此函数取最后一个元素为枢纽, 将其放置在其正确的位置, 使得它左边的所有元素都小于等于它, 右边的所有元素大于它 */ int partition (int arr[], int low, int high) { int pivot = arr[high]; // 枢纽 int i = (low - 1); // 较小元素索引 for (int j = low; j <= high- 1; j++) { if (arr[j] <= pivot) { i++; // 增加较小元素索引 swap(&arr[i], &arr[j]); } } swap(&arr[i + 1], &arr[high]); return (i + 1); } /* 快速排序的主要函数。 该函数通过调用partition函数来进行分区操作*/ void quickSort(int arr[], int low, int high) { if (low < high) { /* pi 是划分后的索引,arr[p] 已经位于其最终位置 */ int pi = partition(arr, low, high); // 对枢轴左侧部分进行递归排序 quickSort(arr, low, pi - 1); // 对枢轴右侧部分进行递归排序 quickSort(arr, pi + 1, high); } } ``` 此段代码展示了如何利用快速排序的思想对数组中的整数进行升序排列,并打印出已排序的结果。这段代码可以在洛谷平台上找到类似的版本用于学习目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值