zoukankan      html  css  js  c++  java
  • 代码研究之“有空数据的情况下怎样进行快速排序”

    xiaoboalex网友贴的代码,暂时没看,过几天再看下,当是存起来吧:

    #define NULL 0
    #include <iostream>
    using namespace std;
    
    void swap(int arr[], int i, int j)
    {
    	int tmp = arr[i];
    	arr[i] = arr[j];
    	arr[j] = tmp;
    }
    
    void move(int arr[], int s, int e, int& i, int delta)
    {
    	i += delta;
    	while (i >= s && i <= e && NULL == arr[i]) 
    		i += delta;
    }
    
    void quick_sort(int arr[], int s, int e)
    {
    	if (s >= e) return;
    	int key = arr[s];
    	int i = s, j = e;
    
    	while (NULL == arr[i]) move(arr, s, e, i, 1);
    	while (NULL == arr[j]) move(arr, s, e, j, -1);
    	if (i >= j) return;
    
    	while (i < j)
    	{
    		while (i < j && arr[j] >= key) move(arr, s, e, j, -1);
    		swap(arr, i, j);
    		while (i < j && arr[i] <= key) move(arr, s, e, i, 1);
    		swap(arr, i, j);
    	}
    	quick_sort(arr, s, i-1);
    	quick_sort(arr, i+1, e);
    }
    
    int main ()
    {
    	int arr[9] = {9, 4, NULL, 6, 2, NULL, NULL, 7, 3};
    	quick_sort(arr, 0, 8);
    
    	for (int i=0; i<9; ++i) cout<<arr[i]<<" ";
    	cout<<endl;
    
    	system("pause");
    	return 0;
    }
    

  • 相关阅读:
    POJ3613 k边最短路
    洛谷4014最大/小费用最大流
    POJ1734无向图求最小环
    洛谷4013数字梯形
    洛谷4147玉蟾宫
    洛谷4145上帝造题的七分钟2
    洛谷4092 树
    Nginx动静分离-tomcat
    nginx之Geoip读取地域信息模块
    Nginx与Lua开发
  • 原文地址:https://www.cnblogs.com/xiangshancuizhu/p/1970278.html
Copyright © 2011-2022 走看看