JSMS07-删除数组中的重复项

123 阅读1分钟

删除数组中的重复项

解法:

1、题目没有说不能用排序,所以首先用排序

2、通过遍历删除重复项即可

	<script>
		let arr=[1,5,9,7,5,3,1,1,2,5,9,3,6,7,4,6,2,0,1,10];
		/*这里采用希尔排序*/
		function shellSort(arr){
			let shell=5;
			let i;
			let tmp;
			for(shell;shell>1;shell=(Math.floor(shell/2))){
				for(let j=shell;j<arr.length;j++){
					tmp=arr[j];
					for(i=j;i>0&&arr[i-shell]>tmp;i-=shell){
						arr[i]=arr[i-shell];
					}
					arr[i]=tmp;
				}
			}
			return arr;
		}
                /*删除重复项*/
		function delRepition(arr){
			for(let i=0;i<arr.length;){
				if(arr[i]===arr[i+1]){
					for(let j=i;j<arr.length-1;j++){
						arr[j]=arr[j+1];
					}
					arr.pop();
				}else{
					i++;
				}
			}
			return arr;
		}
		arr=shellSort(arr);
		let a=delRepition(arr);
		console.log(a);
	</script>

其实这道题用插入排序,在插入的过程中直接删除重复项可以节省O(N^2)的事件复杂度