快速排序、冒泡排序、插入排序、选择排序

    xiaoxiao2022-07-07  173

    1、快速排序

    void QuickSort(int values[22], int begin, int end) { int left = begin; int right = end; int base = values[(left + right)/2]; while(left <= right) { for(;values[left] < base; left++) ; for(;values[right] > base; right--) ; if(left <= right) { int temp = values[left]; values[left] = values[right]; values[right] = temp; left++; right--; } } if(right > begin) { QuickSort(values, begin, right); } if(left < end) { QuickSort(values, left, end); } return; }

    2、冒泡排序

    void BubbleSort(int values[], int iSize) { if((NULL == values) || (0 >= iSize)) { return; } for(int index = iSize; index >= 0; index--) { for(int i = 0; i < iSize - index - 1; i++) { if(values[i] > values[i + 1]) { int iTemp = values[i]; values[i] = values[i + 1]; values[i + 1] = iTemp; } } } }

    3、插入排序

    void InsertSort(int values[], int iSize) { if((NULL == values) || (0 >= iSize)) { return; } for(int index = 0; index < iSize - 1; index++) { int iCurrent = values[index + 1]; for(int iPre = index; iPre >= 0; iPre--) { if(values[iPre] > iCurrent) { values[iPre + 1] = values[iPre]; } else { values[iPre + 1] = iCurrent; } } } }

    4、选择排序

    void SelectSort(int values[], int begin, int end) { if((NULL == values) || (begin >= end)) return; while(begin < end) { int min = values[begin]; for(int i = begin; i <= end; i++) { if(min > values[i]) { int temp = values[i]; values[i] = min; min = temp; } } values[begin] = min; begin++; } return; } void SelectSort(int values[], int iSize) { if((NULL == values) || (0 >= iSize)) { return; } for(int index = 0; index < iSize; index++) { int iMinIndex = index; for(int i = index + 1; i < iSize; i++) { if(values[i] < values[index]) { iMinIndex = i; } int iTemp = values[index]; values[index] = values[iMinIndex]; values[iMinIndex] = iTemp; } } }
    最新回复(0)