zoukankan      html  css  js  c++  java
  • 数据结构&刷题「1」

    洛谷排序算法题单:https://www.luogu.com.cn/training/107#problems

    P1271 【深基9.例1】选举学生会

    冒泡排序—TLE

    #include<stdio.h>
    #define MAXN  2000000
    
    int num[MAXN];
    
    int main(){
    	int a,b,temp;
    	scanf("%d%d",&a,&b);
    	for(int i=0;i<b;i++)
    		scanf("%d",&num[i]);
    	for(int j=0;j<b;j++){
    		for(int k=0;k<b-1;k++){
    			if(num[k]>num[k+1]){
    				temp = num[k];
    				num[k] = num[k+1];
    				num[k+1] = temp;
    			}
    		}
    	}
    	for(int i=0;i<b;i++){
    		printf("%d ",num[i]);
    	}
    	return 0;
    } 
    

    计数排序

    #include<stdio.h>
    
    int main(){
    	int n,m;
    	scanf("%d%d",&n,&m);
    	int a[n+1]={0},num[m],temp[m];
    	for(int i=0;i<m;i++)
    		scanf("%d",&num[i]);
    	// 计算每个元素的个数放入数组a中 
    	for(int j=0;j<m;j++)
    		a[num[j]]++;
    	
    	// 依次累加
    	for(int k=1;k<=n;++k)
    		a[k] = a[k-1]+a[k];
    	// 排序
    	for(int i=m-1;i>=0;--i){
    		int index = a[num[i]]-1;
    		temp[index] = num[i];
    		a[num[i]]--;
    	} 
    	for(int i=0;i<m;i++){
    		printf("%d ",temp[i]);
    	}
    	return 0;
    }
    

    P1177 【模板】快速排序

    快速排序1—TLE

    #include<stdio.h>
    
    int A[100001];
    
    int partition(int left,int right){
    	int pivot = A[right];
    	int i = left;
    	for(int j=left;j<=right;j++){
    		if(A[j] < pivot){
    			int temp = A[i];		
    			A[i] = A[j]; 
    			A[j] = temp;
    			i++;
    		}
    	}
    	int temp = A[i];		
    	A[i] = A[right]; 
    	A[right] = temp;
    	return i;
    }
    
    void quick_sort(int left,int right){
    	if(left >= right)
    		return;
    	int q = partition(left,right);
    	quick_sort(left,q-1);
    	quick_sort(q+1,right);
    }
    
    int main(){
    	int n;
    	scanf("%d",&n);
    	for(int i=0;i<n;i++){
    		scanf("%d",&A[i]);
    	}
    
    	quick_sort(0, n-1);
    	for(int j=0;j<n;j++)
    		printf("%d ",A[j]);
    	return 0;
    } 
    
    // 超出时间
    

    快速排序2

    #include<stdio.h>
    
    int A[100001];
    
    void quick_sort(int left,int right){
    	int i,j,tmp,pivot;
    	i = left;
    	j = right;
    	pivot = A[(i+j)/2];
     
    	while(i < j){
    		while(A[j] > pivot) --j;
    		while(A[i] < pivot) ++i;
    		if(i <= j){
    			tmp = A[i];
    			A[i] = A[j];
    			A[j] = tmp;
    			--j;++i;
    		}
        }
    
        if(left < j) quick_sort(left,j);
        if(i < right) quick_sort(i,right);
    }
    
    
    int main(){
    	int n;
    	scanf("%d",&n);
    	for(int i=0;i<n;i++){
    		scanf("%d",&A[i]);
    	}
    
    	quick_sort(0, n-1);
    	for(int j=0;j<n;j++)
    		printf("%d ",A[j]);
    	return 0;
    } 
    
  • 相关阅读:
    CSS浮动元素的水平居中
    html5移动web开发实战必读书记
    再说CSS3渐变——线性渐变
    链栈学习笔记
    用数组实现从文件搜索帐户和验证密码
    启程!
    在Application中集成Microsoft Translator服务之获取访问令牌
    在Application中集成Microsoft Translator服务之开发前准备
    Kinetic使用注意点--canvas
    Kinetic使用注意点--blob
  • 原文地址:https://www.cnblogs.com/yoloyanng/p/12710181.html
Copyright © 2011-2022 走看看